Как получить покрытие 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"
    ]
  }
}
Другие вопросы по тегам