TypeScript, fel i tsconfig.json vid import av modul från egen paket
Jag behöver dela några funktioner mellan Node-projekt, så jag skapade ett privat repository på mitt Github-konto, sedan lade jag till det i ett nytt projekt med:
yarn add git+ssh://[email :my_gh/my-api-types.git --dev
Jag kan se koden i node_modules/my-api-types katalogen och jag kan importera koden med:
import { AccountResolvers } from "my-api-types";
VS Code skickar inget felmeddelande och faktiskt visar IDE korrekt metoderna inuti AccountResolvers. Men när jag vill kompilera projektet får jag:
ERROR in /home/manuel/customer-service/tsconfig.json
[tsl] ERROR
TS6307: File '/home/manuel/customer-service/node_modules/my-api-types/src/features/account/account.graphql.ts'
is not in project file list. Projects must list all files or use an 'include' pattern.
Felfilen pekar på min tsconfig.json, men jag har använt samma fil med andra projekt utan problem:
{
"compilerOptions": {
"composite": true,
"target": "es2016",
"module": "commonjs",
"moduleResolution": "node",
"esModuleInterop": true,
"outDir": "./dist/",
"noImplicitAny": true,
"skipLibCheck": true,
"jsx": "react",
"moduleResolution": "node",
"noFallthroughCasesInSwitch": true,
"forceConsistentCasingInFileNames": true,
"noImplicitReturns": true,
"allowSyntheticDefaultImports": true,
"strict": true,
"noUnusedLocals": true
}
}
UPPDATERING
Problemet försvinner när alternativet "composite" är inställt på "false", säger hjälpdokumentet:
Refererade projekt måste ha den nya composite-inställningen aktiverad. Denna inställning behövs för att säkerställa att TypeScript snabbt kan avgöra var man hittar resultaten från det refererade projektet. Att aktivera composite-flaggan ändrar några saker:
- Inställningen
rootDir, om den inte uttryckligen anges, standardiseras till katalogen som innehållertsconfig-filen - Alla implementationsfiler måste matchas av ett
include-mönster eller listas ifiles-arrayen. Om denna begränsning bryts kommertscatt informera dig om vilka filer som inte angavs deklarationmåste vara påslagen
Svar #1
I tsconfig.json sätt composite=true
Refererade projekt måste ha den nya kompositinställningen aktiverad.
Denna inställning behövs för att säkerställa att TypeScript snabbt kan avgöra var den hittar resultaten från det refererade projektet. Att aktivera composite-flaggan ändrar några saker:
När den här inställningen är på: >>>
Inställningen rootDir, om den inte anges uttryckligen, standardiseras till katalogen som innehåller tsconfig.json-filen.
Alla implementeringsfiler måste matchas av ett inkluderingsmönster eller listas i filarrayen. Om denna begränsning bryts kommer tsc att informera dig om vilka filer som inte angavs.
deklaration är som standard sann
källa
Svar #2
Jag hade ett liknande problem:
File 'd:/Tutorials/dir/dir-backend/src/users/entities/user0session.entity.ts' not found.
The file is in the program because:
Matched by default include pattern '**/*'ts
JSON schema for the TypeScript compiler's configuration file
Detta hände när jag avbröt popup-fönstret från VSC som frågade refactor the imports?. Jag ignorerade det helt enkelt och det resulterade i detta fel.
Lösning:
Jag återskapade filen user0session.entity.ts och tog sedan bort den korrekt. Felet försvann som genom ett trollslag.
Förmodligen i ditt fall, kopiera innehållet och ta bort konfigurationsfilen. Skapa om den med samma innehåll.
