我正在尝试使用nyc + mocha来获得使用es6模块语法的单元测试的测试覆盖率。当我运行mocha my_test.mjs时,一切运行正常。正确解析my_test.mjs中的依赖项(使用本机导入)。但是当我在这个命令前面加上nyc:nyc mocha my_test.mjs时,它就不再起作用了,抛出这个错误:
node_modules/mocha/lib/esm-utils.js:6
return import(url.pathToFileURL(file));
^^^^^^
SyntaxError: Unexpected token import
at Module._extensions..js (module.js:663:10)
at Object.replacementCompile (nodejs/core/tests/cache.install.nodejs_install/node_modules/append-transform/index.js:60:13)
at Module._extensions..js (module.js:663:10)我尝试了不同的变种,nyc --require esm mocha my_test.mjs或强制节点--experimental-modules,但似乎都不起作用。
请注意,我使用的是最新版本的node、nyc和mocha
有什么想法吗?
发布于 2020-12-13 07:03:29
对于任何通过搜索找到它的人来说,c8代码覆盖工具都是我的替代品。我只是安装了它,并在我的package.json脚本中用'c8‘替换了'nyc’。
此外,如果你感兴趣,这里是开放的(在我写这篇文章的时候)纽约的问题:https://github.com/istanbuljs/nyc/issues/659
发布于 2020-07-02 20:30:00
在更新依赖项后,我遇到了同样的问题。我更新到了mocha版本8.x,同时仍然使用mocha.opts进行配置。
#4175:不再支持mocha.opts,v7.0.0之后已弃用并显示警告
请参阅发行说明:https://github.com/mochajs/mocha/releases/tag/v8.0.0
恢复到mocha 7.x最终帮助了我*。如果不想使用mocha7或更早的版本,可以用配置文件https://mochajs.org/#configuring-mocha-nodejs替换mocha.opts
*注:在此过程中,我还添加了
"@types/node": "14.0.14",
"@types/mocha": "7.0.2",敬package.json。我在纽约的版本是"nyc": "15.1.0",,但我不确定是否有必要这样做来解决您的问题。
发布于 2020-07-27 20:50:59
冒着看起来高人一等的风险;我注意到上面你说你的版本是14.4.0,请仔细检查你的版本。我以为我用的是14.x版本,因为我更新了我的package.json,当我输入:
npm list | grep node我得到了:
+-- @types/node@14.0.26
+-- nodemon@2.0.4
+-- ts-node@8.10.2我对Node的熟悉程度足以让我被绊倒。如果我键入:
node --version然后我发现我用的是一个更老的。
一旦我更新到最新版本(14.6.0),这个错误就消失了。我使用的是Windows,所以我不得不从nodejs.org下载最新版本。
https://stackoverflow.com/questions/62509699
复制相似问题