Javascript 尝试ES6风格的导入会带来';无法在模块';

Javascript 尝试ES6风格的导入会带来';无法在模块';,javascript,intellij-idea,mocha.js,chai,Javascript,Intellij Idea,Mocha.js,Chai,我正在尝试用intellij编写一个javascript测试,我需要为它导入一些依赖项,我想使用ES6风格的导入语句,但得到了错误 /usr/local/bin/node/workspace/rr sample/node\u modules/mocha/bin/\u mocha --ui bdd--reporter“/Users/me/Library/Application Support/IntelliJIdea2019.1/NodeJS/js/mocha intellij/lib/mocha

我正在尝试用intellij编写一个javascript测试,我需要为它导入一些依赖项,我想使用ES6风格的导入语句,但得到了错误

/usr/local/bin/node/workspace/rr sample/node\u modules/mocha/bin/\u 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
从“柴”进口柴
^^^^^^
SyntaxError:无法在模块外部使用导入语句
在wrapSafe(内部/modules/cjs/loader.js:1043:16)
at模块编译(内部/modules/cjs/loader.js:1091:27)
在Object.Module._extensions..js(internal/modules/cjs/loader.js:1160:10)
在Module.load(内部/modules/cjs/loader.js:976:32)
at Function.Module._load(内部/modules/cjs/loader.js:884:14)
at Module.require(内部/modules/cjs/loader.js:1016:19)
根据需要(内部/modules/cjs/helpers.js:69:18)
at/workspace/rr sample/node_modules/mocha/lib/mocha.js:334:36
在Array.forEach(它告诉您如何修复此错误,但在另一个上下文中它对我没有帮助,并且它没有解释问题是什么)

如果有帮助,这里是我正在使用的代码

//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;
  });

});
根据报告:

因此,您必须确保将脚本作为es模块执行


e、 g.使用Nodejs而不是Nodejs来执行脚本,以启用es6或更高版本。

运行用es6编写的Mocha测试的最简单方法是使用Mocha
--require@babel/register
选项动态编译它们(请参阅)当然,您需要确保安装相应的模块并相应地设置
.babelrc

package.json:

.LRC:


另请参见

我通过在项目源添加一个.mocharc.yaml文件来实现这一点,该文件包含以下内容:

require: '@babel/register'

来源:

我在将一个ts库更新为es6模块而不是commonjs时遇到了相同的问题。在tsconfig.json中的更改之后,我的
npm运行测试产生了上述错误

import chai from 'chai'
^^^^^^
SyntaxError: Cannot use import statement outside a module
我在没有babel的情况下解决了这个问题,添加了一个自己的tsconfig文件,只是为了测试

tsconfig.testing.json

{
  "compilerOptions": {
      "module": "commonjs",
      "target": "es6"
  },
  "include": ["**/*.spec.ts"]
}
通过package.json中的脚本运行测试

"test": "cross-env TS_NODE_PROJECT=\"tsconfig.testing.json\" mocha -r ts-node/register src/**/*.spec.ts",

(跨环境设置环境变量os独立)

“它不能解释问题所在” — 它明确指出“如果您的代码使用
导入
导出
,那么它必须作为模块加载。”以及它指出您必须使用
type=“模块”的部分
。你看到了吗?对我来说很重要的是额外的摩卡选项它的摩卡运行配置,你可以在运行>编辑配置中找到它…对我有用,没有使用他在屏幕截图中的配置问题是关于在摩卡中使用Typescript的问题。不在AppNote中,
cross env
正在维护中mode@pixel,你能辩诉吗se添加这是如何相关的,谢谢一些人可能想坚持使用最新/积极维护的LIB-我的评论是针对那些人的维护模式基本上意味着不会添加新功能,必要时只需进行错误修复。它与上面的用例相关。请参阅更多信息并在上找到替代方案。没有Tconfig更改?我刚刚遇到了同样的问题,这个脚本在没有任何额外更改的情况下对其进行了更正:“test”:“mocha-rts node src/***.test.ts”
{
  "compilerOptions": {
      "module": "commonjs",
      "target": "es6"
  },
  "include": ["**/*.spec.ts"]
}
"test": "cross-env TS_NODE_PROJECT=\"tsconfig.testing.json\" mocha -r ts-node/register src/**/*.spec.ts",