有一篇非常棒的文章 "Testing native ES modules using Mocha and esm" 是由Alex Gibson撰写的。非常感谢他。
我尝试在我的项目中使用具有原生ES模块支持的mocha,并遇到了两个不同的错误:
我尝试在我的项目中使用具有原生ES模块支持的mocha,并遇到了两个不同的错误:
$ ./node_modules/mocha/bin/mocha --require esm './test/Util.test.js'
TypeError [ERR_VM_DYNAMIC_IMPORT_CALLBACK_MISSING]: A dynamic import callback was not specified.
at exports.importModuleDynamicallyCallback (internal/process/esm_loader.js:41:9)
at formattedImport (/.../node_modules/mocha/lib/esm-utils.js:6:23)
at Object.exports.requireOrImport (/.../node_modules/mocha/lib/esm-utils.js:23:14)
at Object.exports.loadFilesAsync (/.../node_modules/mocha/lib/esm-utils.js:33:34)
at Mocha.loadFilesAsync (/.../node_modules/mocha/lib/mocha.js:427:19)
...
$ /usr/bin/node /.../node_modules/mocha/bin/mocha -r esm --ui bdd --reporter \
/.../PhpStorm/plugins/NodeJS/js/mocha-intellij/lib/mochaIntellijReporter.js \
/.../test/Util.test.js
TypeError: Invalid host defined options
at formattedImport (/.../node_modules/mocha/lib/esm-utils.js:6:23)
at Object.exports.requireOrImport (/.../node_modules/mocha/lib/esm-utils.js:23:14)
at Object.exports.loadFilesAsync (/.../node_modules/mocha/lib/esm-utils.js:33:34)
at Mocha.loadFilesAsync (/.../node_modules/mocha/lib/mocha.js:427:19)
...
"type": "module"
,因为我希望生成ESM模块作为最终产品。我还在使用TypeScript,但是到目前为止,我尝试让mocha、ts-node、esm和/或--experimental-specifier-resolution
选项一起正常工作时没有成功。 - kshetlinepackage.json
中留下一个ES6源的标志:"type": "module"
或在mocha
参数中使用--require esm
选项。当两种变体同时存在时,mocha
会失败。 - Alex Gusev"type": "module"
。将 Mocha 从版本 9.x.x 降级到 8.3.0 可以解决这个问题。 - RemiXmocha
从v9.0.x
降级到v8.4.x
可以解决这个问题。谢谢 @RemiX。 - Fery W