ES6不被识别 – NodeJS和WebStorm
我一直在search和search,无法find答案。
我只是有点熟悉Typescript。 开始在我的GraphQL NodeJS服务器上工作,并希望使用Typescript来更安全,更简单的编码。
首先需要做的是将当前的JS版本设置为ES6,所以我做了。
另外我设置我的tsconfig
方式:
{ "compilerOptions": { "module": "es6", "target": "es6", "noImplicitAny": false, "outDir": "./build", "sourceMap": true }, "exclude": [ "node_modules" ]
}
我的index.js
import * as express from 'express'; import * as graphqlHTTP from 'express-graphql'; import {Schema} from './src/schema/Schema'; const PORT = 3000; const app = express(); const graphqlOption: graphqlHTTP.OptionsObj = { schema: new Schema().getSchema(), pretty: true, graphiql: true }; app.use('/graphql', graphqlHTTP(graphqlOption)); app.listen(PORT, ()=> { console.log("listening on PORT 3000"); });
运行时,我越来越
SyntaxError:意外的令牌导入
还有,当我hover的const graphqlOption: graphqlHTTP.OptionsObj
我得到
目前的JavaScript版本不支持types
请帮助,我做错了什么?
提前致谢。
编辑:
想要清楚的是,当我使用一个简单的var express = require('express')
我不会收到这个意外的令牌,它会移动到下一行
截图:
去:
File -> Settings -> Languages -> JavaScript
并启用ES6。
问题不在于WebStorm或NodeJS,而是因为您没有将ES6模块声明转换为其ES5 CommonJS等价物,所以当您运行输出时,您会收到错误,因为没有任何版本的Node实现ES6模块。
更新你的tsconfig.json
:
"compilerOptions": { "module": "commonjs", "target": "es5", ... }
感谢所有的帮助,最终我发现了这个问题。 如果你仔细观察,你会注意到我没有index.ts
而我错误的做法是用Typescript
语法来运行index.js
。
我把它重命名为index.ts
,使用tsc
再次创buildbuild
目录,然后运行在那里创build的index.js
,一切正常。
感谢所有的评论。