【问题标题】:ES6 is not recognized - NodeJS and WebStormES6 无法识别 - NodeJS 和 WebStorm
【发布时间】:2016-12-31 14:07:59
【问题描述】:

我一直在谷歌搜索和搜索,但找不到答案。

我只是对 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");
});

当我运行这个时,我得到了

语法错误:意外的令牌导入

另外,当悬停const graphqlOption: graphqlHTTP.OptionsObj 时,我得到了

当前 JavaScript 版本不支持类型

请帮忙,我做错了什么?

提前致谢。

编辑:

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

屏幕截图:

【问题讨论】:

  • @JaromandaX 你能解释一下吗?
  • 您是否阅读了该链接上接受的答案?它解释了SyntaxError: unexpected token import
  • 到目前为止,这不是 WebStorm 错误(因为错误发生在节点实际执行期间)。也许它需要先以某种方式转译? (抱歉,根本不是 JS 人,所以这里帮不上忙)
  • 是的,如果 Typescript 可以编译成 es5,那么编译成 es6 就是一个错误。目前有零个支持所有 es6 的 javascript 解释器。人们要么对仅使用箭头函数等受支持的功能很挑剔,要么使用 es5 到 6 编译器。

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


【解决方案1】:

转到:

File -> Settings -> Languages -> JavaScript

并启用 ES6。

【讨论】:

  • 正如我在我的问题中提到的。这是我做的第一件事:将 JavaScript 版本更改为 ES6
【解决方案2】:

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

更新您的tsconfig.json

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

【讨论】:

  • 可选"target" 可以设置为"es6"
【解决方案3】:

感谢大家的帮助,最终我找到了问题所在。 如果你仔细看,你会发现我没有index.ts,而我错误地试图在其中运行index.js,其中包含Typescript 语法。

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

感谢所有cmets。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-15
    • 2016-11-03
    • 2014-07-18
    • 2018-07-13
    • 2019-07-20
    • 2018-03-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多