はじめに
react-testing-libraryの導入でtsconfig.json
を変更したところ、表題のエラーとなりbuildできなくなりました。エラーの原因と解決方法を備忘録としてまとめました。
問題
tsconfig.json
を下記で設定すると、buildできない。
tsconfig.json
{
"files": [],
"references": [
{ "path": "./tsconfig.app.json" },
{ "path": "./tsconfig.node.json" }
],
"compilerOptions": {
"target": "ESNext",
"useDefineForClassFields": true,
"lib": ["DOM", "DOM.Iterable", "ESNext"],
"allowJs": false,
"skipLibCheck": true,
"esModuleInterop": false,
"allowSyntheticDefaultImports": true,
"strict": true,
"forceConsistentCasingInFileNames": true,
"module": "ESNext",
"moduleResolution": "Node",
"resolveJsonModule": true,
"isolatedModules": true,
"noEmit": true,
"jsx": "react-jsx",
"types": ["node", "jest", "@testing-library/jest-dom"]
},
"include": ["src"]
}
解決方法
"include": ["src"]
の記述を削除する
このエラーが発生した理由として考えられるのは:
-
include": ["src"]を記述することで、コンパイル対象がsrc配下のみとなります
src配下以外も参照している場合、TypeScript はそれらを見つけられずエラーになったと考えられます。 -
include設定が競合を起こしていた
tsconfig.json
{
"files": [],
"references": [
{ "path": "./tsconfig.app.json" },
{ "path": "./tsconfig.node.json" }
],
"compilerOptions": {
"target": "ESNext",
"useDefineForClassFields": true,
"lib": ["DOM", "DOM.Iterable", "ESNext"],
"allowJs": false,
"skipLibCheck": true,
"esModuleInterop": false,
"allowSyntheticDefaultImports": true,
"strict": true,
"forceConsistentCasingInFileNames": true,
"module": "ESNext",
"moduleResolution": "Node",
"resolveJsonModule": true,
"isolatedModules": true,
"noEmit": true,
"jsx": "react-jsx",
"types": ["node", "jest", "@testing-library/jest-dom"]
+ }
- },
- "include": ["src"]
}
おわりに
設定周り難しいです。
参考