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')我不会收到这个意外的令牌,它会移动到下一行

截图:

错误,JavaScript设置和tsconfig

去:

 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 ,一切正常。

感谢所有的评论。