我正在尝试使用 nyc + mocha 来获得使用 es6 模块语法的单元测试的测试覆盖率。
当我运行 mocha my_test.mjs
一切正常。 my_test.mjs 中的依赖项(使用 native 导入)已正确解析。
但是当我在这个命令前面加上 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 ,但似乎没有任何效果。注意,我使用的是最新版本的 node、nyc 和 mocha
任何的想法?
最佳答案
对于通过搜索找到此内容的任何人,c8代码覆盖工具对我来说是一个替代品。
我实际上只是安装了它,并在我的 package.json 脚本中将 'nyc' 替换为 'c8' 。
此外,如果您好奇,这里是开放的(在我写这篇文章时)纽约问题:https://github.com/istanbuljs/nyc/issues/659
关于node.js - 纽约 + Mocha + es6 模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62509699/