ES6无法识别 - NodeJS和WebStorm

时间:2016-08-24 12:26:49

标签: javascript node.js typescript ecmascript-6 webstorm

我一直在谷歌上搜索,无法找到答案。

我对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:意外令牌导入

此外,当我将鼠标悬停在const graphqlOption: graphqlHTTP.OptionsObj

  

当前JavaScript版本

不支持类型

请帮助,我做错了什么?

提前致谢。

编辑:

想要清楚的是,当我使用简单的var express = require('express')时,我没有得到这个意外的令牌并且它移动到下一行

SCREENSHOTS:

Error, JavaScript settings and tsconfig

3 个答案:

答案 0 :(得分:4)

转到:

File -> Settings -> Languages -> JavaScript

启用ES6。

答案 1 :(得分:2)

问题不在于WebStorm或NodeJS,而是您没有将ES6模块声明转换为其ES5 CommonJS等效声明,因此当您运行输出时,您会收到错误,因为没有任何版本的Node实现ES6模块。 / p>

更新tsconfig.json

"compilerOptions": {
    "module": "commonjs",
    "target": "es5",
    ...
}

答案 2 :(得分:2)

感谢所有帮助,最终我发现了问题。 如果你仔细观察,你会注意到我没有index.ts而我错误地想要做的就是在其中运行index.js Typescript语法。< / p>

我已将其重命名为index.ts,再次使用tsc创建build目录,然后运行在那里创建的index.js,一切正常。

感谢所有评论。