javascript - 尝试 ES6 样式导入会给出“不能在模块外使用导入语句”
问题描述
我正在尝试在 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 (<anonymous>)
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.<anonymous> (/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
究竟是什么问题?我找到了这个链接(和其他链接)http://xahlee.info/js/js_import_export.html,它告诉你如何解决这个错误,但在另一个对我没有帮助的上下文中,它没有解释问题是什么.
如果这里有帮助的话就是我正在使用的代码。
//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;
});
});
解决方案
--require @babel/register
运行用 ES6 编写的 Mocha 测试的最简单方法是使用 Mocha选项即时编译它们(请参阅https://github.com/mochajs/mocha/wiki/compilers-deprecation#what-should-i-use-instead -然后)。当然,您需要确保安装了相应的模块并进行了相应的.babelrc
设置
包.json:
"dependencies": {
"@babel/cli": "^7.7.4",
"@babel/core": "^7.7.4",
"@babel/preset-env": "^7.7.4",
"@babel/register": "^7.7.4",
...
}
.babelrc:
{
"presets": [
[
"@babel/preset-env"
]
]
}
另请参阅https://dev.to/bnorbertjs/my-nodejs-setup-mocha--chai-babel7-es6-43ei
推荐阅读
- graph - SAS中的图形使用gchart函数得出奇怪的值
- python - 如何从从 CSV 文件导入的列表/字典中的项目中选择一个随机问题?
- google-app-engine - 为什么 Google App Engine flex 构建步骤会失败,而标准适用于相同的代码?
- linux - “apt-get install linux-headers-generic”安装在不同于 $(uname-r) 的目录中
- javascript - 在轮播中循环遍历数组数据不起作用
- node.js - 如何在父级和(分叉的)子级之间共享 TCP 套接字对象?
- c - 在c中使用文件操作写入文本文件时获取空格
- excel - 从 Excel 中获取百分比
- html - 如何更改我的 css 以使其在 Safari 和 Chrome 上呈现相同的效果?
- swift - 值替换后恢复字符串插值