I don't understand what is wrong. Node v5.6.0 NPM v3.10.6
The code:
function (exports, require, module, __filename, __dirname) {
import express from 'express'
};
The error:
SyntaxError: Unexpected token import
at exports.runInThisContext (vm.js:53:16)
at Module._compile (module.js:387:25)
at Object.Module._extensions..js (module.js:422:10)
at Module.load (module.js:357:32)
at Function.Module._load (module.js:314:12)
at Function.Module.runMain (module.js:447:10)
at startup (node.js:140:18)
at node.js:1001:3
Error: SyntaxError: Unexpected token import or SyntaxError: Unexpected token export
Solution: Change all your imports as example
And also change your
export default = foo;
tomodule.exports = foo;
if you can use 'babel', try to add build scripts in package.json(--presets=es2015) as below. it make to precompile import code to es2015
Unfortunately, Node.js doesn't support ES6's
import
yet.To accomplish what you're trying to do (import the Express module), this code should suffice
Also, be sure you have Express installed by running
See the Node.js Docs for more information about learning Node.js.
In my case it was looking after
.babelrc
file, and it should contain something like this:Update: In Node 9, it is enabled behind a flag, and uses the
.mjs
extension.While
import
is indeed part of ES6, it is unfortunately not yet supported in NodeJS by default, and has only very recently landed support in browsers.See browser compat table on MDN and this Node issue.
From James M Snell's Update on ES6 Modules in Node.js (February 2017):
Until support shows up natively, you'll have to continue using classic
require
statements:If you really want to use new ES6/7 features in NodeJS, you can compile it using Babel. Here's an example server.