typescript - ¿resolveJsonModule no funciona con Angular 10?
Tengo un archivo JSON básico en mi carpeta de assets de un proyecto nuevo de Angular 10.
Angular CLI: 10.0.1 Node: 14.5.0 OS: win32 x64 Versión de TSC 3.9.5. En mi tsconfig.json tengo
"compilerOptions": {
"module": "commonjs",
"resolveJsonModule": true,
"esModuleInterop": true
}
He reiniciado vscode varias veces y he intentado compilar desde el terminal de vscode, una ventana de powershell y un terminal bash, todos devolviendo el mismo mensaje: "Considere usar '--resolveJsonModule' para importar un módulo con la extensión '.json'". He intentado compilar con múltiples combinaciones de diferentes opciones. En este punto me pregunto si debería reiniciar este proyecto y simplemente degradar mi versión de Angular.
Respuesta #1
En Angular versión 10 tenemos 3 archivos "tsconfig".
Tienes que agregar las opciones resolveJsonModule y esModuleInterop en el archivo tsconfig.json dentro de compilerOptions.
El archivo debería verse así:
{
"extends": "./tsconfig.base.json",
"compilerOptions": {
"resolveJsonModule": true,
"esModuleInterop": true,
"outDir": "./out-tsc/app",
"types": []
},
"files": [
"src/main.ts",
"src/polyfills.ts"
],
"include": [
"src/**/*.d.ts"
]
}
Actualización: ¡Debe agregarse a tsconfig.json y no a tsconfig.app.json!
Respuesta #2
Si alguien tiene algo similar en Angular 11:
Recibí este mensaje de error adicional:
No se puede encontrar el módulo 'nameOfMyJsonFile.json'. Considera usar '--resolveJsonModule' para importar módulos con la extensión '.json'.
Así que tuve que agregar resolveJsonModule al archivo "tsconfig.json" dentro de compilerOptions, NO en tsconfig.app.json.
{
"compileOnSave": false,
"compilerOptions": {
"baseUrl": "./",
"outDir": "./dist/out-tsc",
"resolveJsonModule": true,
"sourceMap": true,
"declaration": false,
"downlevelIteration": true,
"experimentalDecorators": true,
"moduleResolution": "node",
"importHelpers": true,
"target": "es2015",
"module": "es2020",
"lib": [
"es2018",
"dom"
]
}
}
Respuesta #3
Tuve el mismo problema al ejecutar pruebas de Ionic 5 (Angular 12). Lo resolví con:
import * as SomeJsonObjectName from './assets/someObject.json
pero solo después de agregar
"resolveJsonModule": true,
a las compilerOptions de tsconfig.json
