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 inneholder tsconfig-filen
  • Alle implementasjonsfiler må samsvare med et include-mønster eller være oppført i files-arrayen. Hvis denne begrensningen brytes, vil tsc informere deg om hvilke filer som ikke ble spesifisert
  • deklarasjon må 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.

Relaterte artikler