启动GraphQL服务器时遭遇Unexpected token {语法错误求助
解决Node.js启动GraphQL服务器时的
SyntaxError: Unexpected token {错误 这个问题很明确——你代码里用的ES6对象解构语法,你的Node.js版本不支持!
看报错行var { buildSchema } = require("graphql");,这种把模块导出的属性直接解构赋值的写法是ES6(ECMAScript 2015)才有的特性,而你的Node.js版本大概率是v6.0之前的老版本,默认不支持这个语法,所以才会抛出SyntaxError。
给你几个可行的解决办法:
最推荐:升级Node.js版本
直接把Node.js升级到支持ES6特性的LTS版本(比如v14及以上,现在主流是v18、v20),升级后不需要改任何代码,重新运行node server.js就能正常启动服务器。这是一劳永逸的办法,老版本Node.js不仅缺新特性,还可能有安全漏洞。临时方案:改成ES5兼容写法
如果暂时没法升级,把解构代码改成ES5支持的普通赋值写法就行:var graphql = require("graphql"); var buildSchema = graphql.buildSchema;这样替换后,老版本Node.js就能正常解析你的代码了。
不推荐的复杂方案:用Babel转译
如果你非要用老Node.js版本,也可以通过Babel把ES6代码转译成ES5,但需要额外配置依赖和转译脚本,步骤繁琐,不如直接升级版本省心,这里就不展开了。
改完之后再试一次node server.js,应该就能顺利启动你的GraphQL服务器了。
内容的提问来源于stack exchange,提问作者bimoan
相关产品推荐
相关产品推荐

