我正在尝试在Node v10.15.3 LTS中使用ES6导入,但是我一直遇到相同的语法错误。无论我使用esm,babel还是--experimental-modules标志来启用对ES6导入的支持,这种情况都会发生。这是错误消息:
/home/derrick/demo/index.js:1
(function (exports, require, module, __filename, __dirname) { import otherFunction from './otherFunction';
^^^^^^^^^^^^^
SyntaxError: Unexpected identifier
at new Script (vm.js:80:7)
at createScript (vm.js:274:10)
at Object.runInThisContext (vm.js:326:10)
at Module._compile (internal/modules/cjs/loader.js:664:28)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:712:10)
at Module.load (internal/modules/cjs/loader.js:600:32)
at tryModuleLoad (internal/modules/cjs/loader.js:539:12)
at Function.Module._load (internal/modules/cjs/loader.js:531:3)
at Function.Module.runMain (internal/modules/cjs/loader.js:754:12)
at startup (internal/bootstrap/node.js:283:19)
这是我的代码(使用esm):
package.json
{
"name": "demo",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"keywords": [],
"author": "",
"license": "ISC",
"dependencies": {
"esm": "^3.2.22"
}
}
index.js
import otherFunction from './otherFunction';
otherFunction.js
const otherFunction => {
console.log('Inside other function');
}
export default otherFunction;
我已经完成了几十个教程,试图弄清楚这一点,但是我仍然收到相同的错误消息。
我已经阅读了导入/导出的语法。我还尝试导入{otherFunction}而不是otherFunction,将文件扩展名更改为.mjs,将其命名为vs. default export,以及在我搜索此错误消息时可以找到的其他任何内容。
我非常感谢您的任何建议。我已经花了8个小时在这上面了,快要尖叫了:-)
答案 0 :(得分:0)
由于node.js仍使用common.js模块系统,因此必须进行转译以使用es6语法。
要轻松运行es6 javascript文件,您可以安装babel-cli并使用babel-node命令运行它,如下所示。
npm install -g babel-cli
babel-node index.js
答案 1 :(得分:0)
我终于按照https://hackernoon.com/using-babel-7-with-node-7e401bc28b04上的说明与Babel 7一起使用了。这是基本步骤:
{ "presets": ["@babel/preset-env"] }