jestでCannot find module 'spdx-license-ids'というエラーになった時の対処
どんなエラーが出たのか
jestでテストを実行した時に以下のエラーが出ました
Test suite failed to run
Cannot find module 'spdx-license-ids' from 'node_modules/spdx-expression-parse/scan.js'
Require stack:
node_modules/spdx-expression-parse/scan.js
node_modules/spdx-expression-parse/index.js
node_modules/validate-npm-package-license/index.js
node_modules/normalize-package-data/lib/fixer.js
node_modules/normalize-package-data/lib/normalize.js
node_modules/meow/index.js
src/bin.ts
src/tests/bin.test.ts
at Resolver.resolveModule (node_modules/jest-resolve/build/index.js:306:11)
at Object.<anonymous> (node_modules/spdx-expression-parse/scan.js:4:11)
どうやって治したか
jestのconfigの moduleFileExtensions
に json
を追加したら直りました
- 変更前
"jest": {
"moduleFileExtensions": ["ts", "js"]
}
- 変更後
"jest": {
"moduleFileExtensions": ["ts", "js", "json"]
}
なぜ治ったのか
今回エラーしたパッケージはspdx-license-ids(https://github.com/jslicense/spdx-license-ids) なのですが、内部でjsonファイルが使われています。
jestはconfigのmoduleFileExtensionsに指定された拡張子のファイルしか読み込みません。(https://jestjs.io/docs/en/configuration#modulefileextensions-arraystring)
なので、spdx-license-idsで使われていたjsonファイルを読み込むことができずエラーしました。
ちなみに、jestのmoduleFileExtensionsの初期値は
["js", "json", "jsx", "ts", "tsx", "node"]
なので、私が余計な設定をしていなければこのエラーは発生しませんでしたね😇
Author And Source
この問題について(jestでCannot find module 'spdx-license-ids'というエラーになった時の対処), 我々は、より多くの情報をここで見つけました https://qiita.com/nekoshita_yuki/items/b20b76cad37a6c9748b8著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .