GraphQL的最低必需节点版本?

我正在尝试获取在Node.js环境中作为服务器工作的GraphQL.js的参考实现。 请注意,我对Node.js的使用经验有限。 现在,我正在使用node v4.2.6,它是Ubuntu的Ubuntu 16.04的最新软件包。

官方文件说,这个脚本应该工作:

 var express = require('express'); var graphqlHTTP = require('express-graphql'); var { buildSchema } = require('graphql'); // Construct a schema, using GraphQL schema language var schema = buildSchema(` type Query { hello: String } `); // The root provides a resolver function for each API endpoint var root = { hello: () => { return 'Hello world!'; }, }; var app = express(); app.use('/graphql', graphqlHTTP({ schema: schema, rootValue: root, graphiql: true, })); app.listen(4000); console.log('Running a GraphQL API server at localhost:4000/graphql'); 

这失败了一个语法错误:

 server.js:3 var { buildSchema } = require('graphql'); ^ SyntaxError: Unexpected token { at exports.runInThisContext (vm.js:53:16) at Module._compile (module.js:374:25) at Object.Module._extensions..js (module.js:417:10) at Module.load (module.js:344:32) at Function.Module._load (module.js:301:12) at Function.Module.runMain (module.js:442:10) at startup (node.js:136:18) at node.js:966:3 

express-graphql项目站点显示了一个截然不同的脚本,但是我必须单独组装一个模式。 GraphQL.js项目站点具有用于组装模式的脚本:

 import { graphql, GraphQLSchema, GraphQLObjectType, GraphQLString } from 'graphql'; var schema = new GraphQLSchema({ query: new GraphQLObjectType({ name: 'RootQueryType', fields: { hello: { type: GraphQLString, resolve() { return 'world'; } } } }) }); 

这也失败了一个语法错误:

 server.js:1 (function (exports, require, module, __filename, __dirname) { import { ^^^^^^ SyntaxError: Unexpected reserved word at exports.runInThisContext (vm.js:53:16) at Module._compile (module.js:374:25) at Object.Module._extensions..js (module.js:417:10) at Module.load (module.js:344:32) at Function.Module._load (module.js:301:12) at Function.Module.runMain (module.js:442:10) at startup (node.js:136:18) at node.js:966:3 

我猜测也许Node.js的v4.2.6太旧了。 那是对的吗? 如果是这样,使用GraphQL.js和express-graphql所需的Node.js的最低版本是express-graphql ? 而且,如果这不是我的问题…任何想法是什么?

该教程的先决条件是:

在开始之前,您应该安装Node v6 […]

尽pipe要公平,但还是继续:

尽pipe这些例子应该主要在Node的早期版本中工作。

Node v4不支持解构,这是它为你窒息的部分。 您可以查看node.green ,了解哪些节点版本支持哪些function。

这也失败了一个语法错误:

import|export在任何版本的节点中都不受支持。 你将不得不传递。 或者你可以使用Node的模块系统。 为此,它应该看起来像这样:

 var graphqlModule = require("graphql"); var graphql = graphqlModule.graphql; var GraphQLSchema = graphqlModule.GraphQLSchema; // ...