VSCode typescript importering av JSON-fil uthevingsproblem
Jeg opplever en merkelig oppførsel når jeg importerer JSON-filer ved bruk av import-setningen i TypeScript mens jeg bruker VSCode. Merk at dette ikke er et problem med TypeScript i seg selv, bare VSCode-markeringen.
Jeg har redigert min tsconfig.json ved å legge til resolveJsonModule og esModuleInterop med verdien true i mine kompilatoralternativer for å aktivere import av json i TypeScript.
Jeg har også lagt til denne pakken i prosjektet mitt https://www.npmjs.com/package/json-d-ts og lagt til et typeRoots-attributt i tsconfig.json med verdien ["node_modules/json-d-ts"]
Jeg har importert json-filen (funnet på src/config/firebaseServiceKey.json) innenfor en modul (funnet på src/firebaseApp.ts) som ligger i en overordnet katalog, dermed ser importen slik ut:
import databaseUrl from "./config/firebaseDatabaseURL.json";
VSCode klager ikke på denne importen:
Men jeg har et annet modul som importerer den samme filen på et annet nivå i prosjektmappen, dette moduset finnes på test/utils.ts, importen ser slik ut:
import serviceKey from "../src/config/firebaseServiceKey.json";
Denne gangen ser det ut til at VSCode ikke liker den relative importen og markerer modulen som manglende:
Noen ideer om hvordan man kan konfigurere VSCode for å fikse dette problemet?
Her er den relevante delen av resultatet av å kjøre tsc --traceResolution:
======== Resolving module '../src/config/firebaseServiceKey.json' from '/home/jty/April2018/vs-server/test/utils.ts'. ========
Explicitly specified module resolution kind: 'NodeJs'.
Loading module as file / folder, candidate module location '/home/jty/April2018/vs-server/src/config/firebaseServiceKey.json', target file type 'TypeScript'.
File '/home/jty/April2018/vs-server/src/config/firebaseServiceKey.json.ts' does not exist.
File '/home/jty/April2018/vs-server/src/config/firebaseServiceKey.json.tsx' does not exist.
File '/home/jty/April2018/vs-server/src/config/firebaseServiceKey.json.d.ts' does not exist.
Directory '/home/jty/April2018/vs-server/src/config/firebaseServiceKey.json' does not exist, skipping all lookups in it.
Loading module as file / folder, candidate module location '/home/jty/April2018/vs-server/src/config/firebaseServiceKey.json', target file type 'JavaScript'.
File '/home/jty/April2018/vs-server/src/config/firebaseServiceKey.json.js' does not exist.
File '/home/jty/April2018/vs-server/src/config/firebaseServiceKey.json.jsx' does not exist.
Directory '/home/jty/April2018/vs-server/src/config/firebaseServiceKey.json' does not exist, skipping all lookups in it.
Loading module as file / folder, candidate module location '/home/jty/April2018/vs-server/src/config/firebaseServiceKey.json', target file type 'Json'.
File '/home/jty/April2018/vs-server/src/config/firebaseServiceKey.json' exist - use it as a name resolution result.
======== Module name '../src/config/firebaseServiceKey.json' was successfully resolved to '/home/jty/April2018/vs-server/src/config/firebaseServiceKey.json'. ========
Her er min tsconfig.json
{
"compilerOptions": {
"module": "commonjs",
"resolveJsonModule": true,
"esModuleInterop": true,
"allowSyntheticDefaultImports": true,
"target": "es6",
"noImplicitAny": true,
"moduleResolution": "node",
"sourceMap": true,
"outDir": "dist",
"baseUrl": ".",
"paths": {
"*": [
"node_modules/*",
"src/types/*"
]
}
},
"include": [
"src/**/*"
],
"typeRoots": [
"node_modules/json-d-ts"
]
}
Svar #1
Jeg har stått overfor lignende problemer, sjekk at filen din er inkludert som @Matt McCutchen sa, filen som inneholder import serviceKey from "../src/config/firebaseServiceKey.json"; bør være inkludert under src-mappen som du beskrev i tsconfig.json
"include": [
"src/**/*"
],
I mitt tilfelle var det en testfil som ikke skulle inkluderes i bygget. På grunn av det har jeg bestemt meg for å ignorere den markeringen i vs.
// @ts-ignore
import packageJson from '../../../../package.json';

