我一直在谷歌上搜索,无法找到答案。
我对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')
时,我没有得到这个意外的令牌并且它移动到下一行
答案 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
,一切正常。
感谢所有评论。