简体   繁体   中英

ES6 is not recognized - NodeJS and WebStorm

I've been googling and searching everywhere and couldn't find an answer.

I'm just a little familiar with Typescript. Started working on my GraphQL NodeJS server and wanted to use Typescript for safer and easier coding.

The first thing needed to be done is set the current JS version to ES6 and so I did.

In addition I set my tsconfig that way:

{
"compilerOptions": {
    "module": "es6",
    "target": "es6",
    "noImplicitAny": false,
    "outDir": "./build",
    "sourceMap": true
},
"exclude": [
    "node_modules"
]

}

my 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");
});

When running this I'm getting

SyntaxError: unexpected token import

also, when hovering the const graphqlOption: graphqlHTTP.OptionsObj I get

Types are not supported by the current JavaScript version

Please help, what am i doing wrong?

Thanks in advance.

EDIT:

Wanted it to be clear that when I'm using a simple var express = require('express') I do not get this unexpected token and it moves to the next line

SCREENSHOTS:

错误,JavaScript设置和tsconfig

Go to:

File -> Settings -> Languages -> JavaScript

And enable ES6.

The problem is not with WebStorm or NodeJS, it is that you are not transpiling the ES6 module declarations into their ES5 CommonJS equivalent, so when you run the output you are getting an error as no version of Node implements ES6 modules.

Update your tsconfig.json :

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

Thanks for all the help, eventually I've found the problem. If you'll look carefully enough you'll notice i do not have an index.ts and what I was trying to do by mistake is to run the index.js with Typescript syntax in it.

I've renamed it to index.ts , used tsc to create the build directory again and then ran the index.js created there, everything works.

Thanks for all the comments.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM