javascript - Nelze najít moduly TypeScriptu
Ve velmi velkém smíšeném projektu TS/JS při použití VSCode dostávám následující chybu.
Cannot find module 'shared/common/enums/httpMethod'.ts(2307)
Aplikace se úspěšně sestavuje a náš pre-commit hook, který spouští eslint a testy, nepadá.
Toto se děje ve všech souborech .ts, do kterých importuji soubory .ts. Našel jsem několik odpovědí k dané problematice, ale žádná nepomohla.
To, co jsem zatím udělal, zahrnuje:
- Změňte verzi TypeScriptu v pracovním prostoru ve VSCode pomocí spodního stavového řádku v části Verze.
- Propojte soubor
vscode.d.tsz node_modules tímto příkazem ln -s /home/work/mymodule/node_modules/vscode.d.ts /usr/share/code/resources/app/out/vs/vscode.d.ts - NPM Install, dokonce odstranil node_modules a restartoval VSCode
Zde je soubor .tsconfig, který používáme. Občas na týmu dostanou jiní členové tuto chybu, ale po npm install a restartování VSCode je vše v pořádku.
{
"compilerOptions": {
"baseUrl": "./src",
"jsx": "react",
// Target latest version of ECMAScript.
"target": "esnext",
// Search under node_modules for non-relative imports.
"moduleResolution": "node",
// Process & infer types from .js files.
"allowJs": true,
// Don't emit; allow Babel to transform files.
"noEmit": true,
// Enable strictest settings like strictNullChecks & noImplicitAny.
"strict": true,
// Disallow features that require cross-file information for emit.
"isolatedModules": true,
// Import non-ES modules as default imports.
"esModuleInterop": true,
"skipLibCheck": true
},
// Import custom typings
"include": ["src/shared/**/*", "./typings"]
}
To není problém s .tsconfig. Zkoumal jsem to a máme správná nastavení. Jen to tady uvádím, pro více informací o této záležitosti. Pokud má někdo stejný problém jako já, prosím, zveřejněte odpověď nebo odkaz na ni. Díky!!
Odpověď č. 1
Našel jsem odpověď na svou otázku. V tsconfig.json. Problém byl v sekci include. Měl jsem problémy v src/admin/...
Takže jsem soubor podle toho upravil, aby to zahrnoval. Po té už nemám žádné problémy:
"include": ["src/shared/**/*", "src/admin/**/* ", ./typings"]
Takže, obecná odpověď je asi zahrnout každý modul, který používáte kromě obecného src.
