TypeScript, feil i tsconfig.json ved import av modul fra egenlaget pakke
Jeg trenger å dele noen funksjoner mellom Node-prosjekter, så jeg opprettet et privat repository på GitHub-kontoen min, og deretter la jeg det til i et nytt prosjekt med:
yarn add git+ssh://[email :my_gh/my-api-types.git --dev
Jeg kan se koden i node_modules/my-api-types-katalogen, og jeg kan importere koden med:
import { AccountResolvers } from "my-api-types";
VS Code sender ingen feilmelding, og IDE-en viser faktisk metodene inne i AccountResolvers riktig. Men når jeg vil kompilere prosjektet, får jeg:
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.
Feilen henviser til min tsconfig.json, men jeg har brukt den samme filen med andre prosjekter uten problemer:
{
"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
}
}
OPPDATERING
Problemet forsvinner når alternativet "composite" settes til "false", sier hjelpedokumentasjonen:
Refererte prosjekter må ha den nye composite-innstillingen aktivert. Denne innstillingen er nødvendig for å sikre at TypeScript raskt kan avgjøre hvor det finner outputtene til det refererte prosjektet. Å aktivere composite-flagget endrer noen få ting:
- Innstillingen
rootDir, hvis den ikke er eksplisitt satt, standardiseres til katalogen som inneholdertsconfig-filen - Alle implementasjonsfiler må samsvare med et
include-mønster eller være oppført ifiles-arrayen. Hvis denne begrensningen brytes, viltscinformere deg om hvilke filer som ikke ble spesifisert deklarasjonmå være slått på
Svar #1
I tsconfig.json sett composite=true
Refererte prosjekter må ha den nye sammensatte innstillingen aktivert.
Denne innstillingen er nødvendig for å sikre at TypeScript raskt kan finne ut hvor utgangene til det refererte prosjektet finnes. Å aktivere composite-flagget endrer noen ting:
Når denne innstillingen er på: >>>
Innstillingen rootDir, hvis den ikke er eksplisitt angitt, standardiseres til katalogen som inneholder tsconfig.json-filen.
Alle implementeringsfiler må samsvare med et inkluderingmønster eller være oppført i fil-arrayen. Hvis denne begrensningen brytes, vil tsc informere deg om hvilke filer som ikke ble spesifisert.
deklarasjon standard til sann
kilde
Svar #2
Jeg hadde et lignende 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
Dette skjedde da jeg avbrøt popup-vinduet fra VSC som spurte refactor the imports?. Jeg ignorerte det rett og slett, og det resulterte i denne feilen.
Løsning:
Jeg gjenskapte filen user0session.entity.ts og slettet den deretter riktig. Feilen var borte som ved magi.
Sannsynligvis i ditt tilfelle, kopier innholdet og slett konfigurasjonsfilen. Opprett den på nytt med det samme innholdet.
