javascript 尝试 ES6 样式导入会导致“无法在模块外使用导入语句”
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/59042716/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
Trying ES6 style import gives 'Cannot use import statement outside a module'
提问by driftwood
I am trying to write a javascript test in intellij for which I need to import some dependancies and I want to use ES6 style import statements but getting error
我正在尝试在 intellij 中编写一个 javascript 测试,我需要为其导入一些依赖项,并且我想使用 ES6 样式的导入语句,但出现错误
/usr/local/bin/node /workspace/rr-sample/node_modules/mocha/bin/_mocha --ui bdd --reporter "/Users/me/Library/Application Support/IntelliJIdea2019.1/NodeJS/js/mocha-intellij/lib/mochaIntellijReporter.js" tests/*.test.js /workspace/rr-sample/tests/App.test.js:3
import chai from 'chai'
^^^^^^
SyntaxError: Cannot use import statement outside a module at wrapSafe (internal/modules/cjs/loader.js:1043:16) at Module._compile (internal/modules/cjs/loader.js:1091:27) at Object.Module._extensions..js (internal/modules/cjs/loader.js:1160:10) at Module.load (internal/modules/cjs/loader.js:976:32) at Function.Module._load (internal/modules/cjs/loader.js:884:14) at Module.require (internal/modules/cjs/loader.js:1016:19) at require (internal/modules/cjs/helpers.js:69:18) at /workspace/rr-sample/node_modules/mocha/lib/mocha.js:334:36 at Array.forEach () at Mocha.loadFiles (/workspace/rr-sample/node_modules/mocha/lib/mocha.js:331:14) at Mocha.run (/workspace/rr-sample/node_modules/mocha/lib/mocha.js:809:10) at Object.exports.singleRun (/workspace/rr-sample/node_modules/mocha/lib/cli/run-helpers.js:108:16) at exports.runMocha (/workspace/rr-sample/node_modules/mocha/lib/cli/run-helpers.js:142:13) at Object.exports.handler (/workspace/rr-sample/node_modules/mocha/lib/cli/run.js:292:3) at Object.runCommand (/workspace/rr-sample/node_modules/yargs/lib/command.js:242:26) at Object.parseArgs [as _parseArgs] (/workspace/rr-sample/node_modules/yargs/yargs.js:1087:28) at Object.parse (/workspace/rr-sample/node_modules/yargs/yargs.js:566:25) at Object.exports.main (/workspace/rr-sample/node_modules/mocha/lib/cli/cli.js:68:6) at Object. (/workspace/rr-sample/node_modules/mocha/bin/_mocha:10:23) at Module._compile (internal/modules/cjs/loader.js:1121:30) at Object.Module._extensions..js (internal/modules/cjs/loader.js:1160:10) at Module.load (internal/modules/cjs/loader.js:976:32) at Function.Module._load (internal/modules/cjs/loader.js:884:14) at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:67:12) at internal/main/run_main_module.js:17:47
/usr/local/bin/node /workspace/rr-sample/node_modules/mocha/bin/_mocha --ui bdd --reporter "/Users/me/Library/Application Support/IntelliJIdea2019.1/NodeJS/js/mocha- intellij/lib/mochaIntellijReporter.js" tests/*.test.js /workspace/rr-sample/tests/App.test.js:3
从“柴”进口柴
^^^^^^
singleRun (/workspace/rr-sample/node_modules/mocha/lib/cli/run-helpers.js:108:16) atexports.runMocha (/workspace/rr-sample/node_modules/mocha/lib/cli/run-helpers .js:142:13) 在 Object.exports.handler (/workspace/rr-sample/node_modules/mocha/lib/cli/run.js:292:3) 在 Object.runCommand (/workspace/rr-sample/node_modules /yargs/lib/command.js:242:26) 在 Object.parseArgs [as _parseArgs] (/workspace/rr-sample/node_modules/yargs/yargs.js:1087:28) 在 Object.parse (/workspace/rr -sample/node_modules/yargs/yargs.js:566:25) 在 Object.exports.main (/workspace/rr-sample/node_modules/mocha/lib/cli/cli.js:68:6) 在 Object。(/workspace/rr-sample/node_modules/mocha/bin/_mocha:10:23) at Module._compile (internal/modules/cjs/loader.js:1121:30) at Object.Module._extensions..js (internal /modules/cjs/loader.js:1160:
What exactly is the issue? I found this link (and others) http://xahlee.info/js/js_import_export.htmlwhich tells you how to fix this error but in another context which doesn't help me, and it doesn't explain what the problem is.
究竟是什么问题?我发现这个链接(和其他人)http://xahlee.info/js/js_import_export.html它告诉你如何解决这个错误,但在另一个对我没有帮助的上下文中,它没有解释问题是什么.
In case it is helpful here is the code I am using.
如果有帮助,这里是我正在使用的代码。
//const chai = require("chai");
import chai from 'chai'
const React = require("react");
const expect = chai.expect;
describe('how it works first-time test', () => {
it('checks equality', () => {
const val = false;
expect(val).to.be.false;
});
});
回答by lena
The easiest way to run Mocha tests written in ES6 is compiling them on-the-fly using Mocha --require @babel/registeroption (see https://github.com/mochajs/mocha/wiki/compilers-deprecation#what-should-i-use-instead-then). Of course, you need to make sure to install the corresponding modules and set up the .babelrcaccordingly
运行用 ES6 编写的 Mocha 测试的最简单方法是使用 Mocha--require @babel/register选项即时编译它们(参见https://github.com/mochajs/mocha/wiki/compilers-deprecation#what-should-i-use-instead -然后)。当然,你需要确保安装相应的模块,并设置了.babelrc相应的
package.json:
包.json:
"dependencies": {
"@babel/cli": "^7.7.4",
"@babel/core": "^7.7.4",
"@babel/preset-env": "^7.7.4",
"@babel/register": "^7.7.4",
...
}
.babelrc:
.babelrc:
{
"presets": [
[
"@babel/preset-env"
]
]
}
See also https://dev.to/bnorbertjs/my-nodejs-setup-mocha--chai-babel7-es6-43ei
另见https://dev.to/bnorbertjs/my-nodejs-setup-mocha--chai-babel7-es6-43ei
回答by Pengson
According to the doc:
根据文档:
https://nodejs.org/api/esm.html#esm_code_import_code_statements
https://nodejs.org/api/esm.html#esm_code_import_code_statements
So you have to ensure execute the script as an es module.
因此,您必须确保将脚本作为 es 模块执行。
e.g. Execute the script using babel-nodeinstead of Nodejs to enable the es6 or newer.
例如使用babel-node而不是 Nodejs执行脚本以启用 es6 或更新版本。


