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åller tsconfig-filen
  • Alla implementationsfiler måste matchas av ett include-mönster eller listas i files-arrayen. Om denna begränsning bryts kommer tsc att informera dig om vilka filer som inte angavs
  • deklaration må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.

Relaterade artiklar