Как получить покрытие nyc для работы с импортом es6 (файлы.mjs)
Обычно я использовал nyc, чтобы обеспечить покрытие для моих модульных тестов. Все хонкей дорей для pre-ES6 require('myModule')
тесты. У меня проблемы с его настройкой для работы с юнит-тестами, использующими импорт ES6. Тесты без покрытия работают с --experimental-modules
и файлы.mjs:
package.json
"scripts": {
"test": "node --experimental-modules ./test/test.mjs",
... others deleted to save space
},
И все работает. Я использую Ленту для тестирования, если это имеет значение. Вывод выглядит так:
(node:9360) ExperimentalWarning: The ESM module loader is experimental.
TAP version 13
# number
ok 1 should be equal
(... more deleted)
Но когда я пытаюсь использовать NYC, например, nyc --reporter=lcov --extension .mjs npm test
Я получаю ошибку:
(node:7304) ExperimentalWarning: The ESM module loader is experimental.
Error [ERR_UNKNOWN_FILE_EXTENSION]: Unknown file extension: C:/Users/Morgan/.node-spawn-wrap-6952-61a26e1bb867/node
at exports.resolve (internal/loader/ModuleRequest.js:126:13)
at Loader.resolve (internal/loader/Loader.js:48:40)
....
Я использую версию узла 8.9.1 и версию 13.0.1 nyc, работающую в Windows.
1 ответ
Как указано в документации, поддержка.mjs должна быть явно добавлена:
Поддерживаемые расширения файлов можно настроить либо с помощью аргументов конфигурации, либо с помощью раздела конфигурации nyc в package.json.
nyc --extension .mjs npm test
{
"nyc": {
"extension": [
".mjs"
]
}
}