Typescript: La opción resolveJsonModule no funciona sin esModuleInterop

Creado en 3 jul. 2018  ·  22Comentarios  ·  Fuente: microsoft/TypeScript


Versión de TypeScript: 2.9.2, 3.0.0-dev.20180703


Términos de búsqueda:

resolveJsonModule, esModuleInterop

Código

import * as test from './test.json';

tsconfig.json:

{
    "compilerOptions": {
        "module": "commonjs",
        "moduleResolution": "node",
        "target": "es2017",
        "lib": ["es2017"],
        "strict": true,
        "sourceMap": true,
        "noEmitOnError": true,
        "baseUrl": ".",
        "resolveJsonModule": true,
        "outDir": "out"
    }
}

Comportamiento esperado:

Sin errores.

Comportamiento real:

Error de compilación:

$ tsc
test.ts:1:23 - error TS2497: Module '"/home/kostya/tmp/resolve-json-test/test"' resolves to a non-module entity and cannot be imported using this construct.

1 import * as test from './test.json';
                        ~~~~~~~~~~~~~

Cuando agrego la opción esModuleInterop a tsconfig.json :

diff --git a/tsconfig.json b/tsconfig.json
index 7f1afb8..e949135 100644
--- a/tsconfig.json
+++ b/tsconfig.json
@@ -9,6 +9,7 @@
         "noEmitOnError": true,
         "baseUrl": ".",
         "resolveJsonModule": true,
+        "esModuleInterop": true,
         "outDir": "out"
     }
 }

y cambie la declaración de importación a:

diff --git a/test.ts b/test.ts
index 07bb9b7..dddcffb 100644
--- a/test.ts
+++ b/test.ts
@@ -1 +1 @@
-import * as test from './test.json';
+import test from './test.json';

funciona. Pero con la opción esModuleInterop necesito cambiar muchas importaciones en mi proyecto, lo cual no es deseable.

Enlace de patio de recreo:

Asuntos relacionados:

Bug Fixed

Comentario más útil

Después de configurar resolveJsonModule en "true", estaba teniendo el mismo problema en VS Code, (TypeScript 3.2.2, VSCode 1.30.1). Reiniciar VS Code resolvió el problema por mí: no tuve que modificar ninguna otra configuración de ts

Todos 22 comentarios

También con resolveJsonModule , pero sin esModuleInterop , el archivo json aparece en el directorio de salida.

Después de configurar resolveJsonModule en "true", estaba teniendo el mismo problema en VS Code, (TypeScript 3.2.2, VSCode 1.30.1). Reiniciar VS Code resolvió el problema por mí: no tuve que modificar ninguna otra configuración de ts

Se confirmó que la configuración de resolveJsonModule en true en mi tsconfig.json resolvió este problema.

El reinicio manual de VS Code resuelve este problema.

Después de configurar resolveJsonModule en "true", estaba teniendo el mismo problema en VS Code, (TypeScript 3.2.2, VSCode 1.30.1). Reiniciar VS Code resolvió el problema por mí: no tuve que modificar ninguna otra configuración de ts

¡Gracias, funcionó!

Después de configurar resolveJsonModule en "true", estaba teniendo el mismo problema en VS Code, (TypeScript 3.2.2, VSCode 1.30.1). Reiniciar VS Code resolvió el problema por mí: no tuve que modificar ninguna otra configuración de ts

También funcionó para mí, ¡gracias!

Después de configurar resolveJsonModule en "true", estaba teniendo el mismo problema en VS Code, (TypeScript 3.2.2, VSCode 1.30.1). Reiniciar VS Code resolvió el problema por mí: no tuve que modificar ninguna otra configuración de ts

Esto realmente funcionó. Gracias 😃

Después de configurar resolveJsonModule en "true", estaba teniendo el mismo problema en VS Code, (TypeScript 3.2.2, VSCode 1.30.1). Reiniciar VS Code resolvió el problema por mí: no tuve que modificar ninguna otra configuración de ts

Gracias, ¡funcionó como un encanto!

Veo un comportamiento similar en intellij a lo que @intelliot describió anteriormente para el código vs. Gracias por la sugerencia.

Para aquellos que han actualizado su objetivo a esnext , deben agregar lo siguiente a su tsconfig :
...
"target": "esnext",
"moduleResolution": "nodo",
...

Inicialmente, después de un reinicio, el archivo es verde, luego 3 segundos después se resalta en rojo nuevamente. Entonces, reiniciar en mi caso no soluciona este problema.

@ chrisj-skinner lo mismo conmigo. No estoy seguro de por qué ocurre esto.

¿Por qué este problema está cerrado si este problema todavía existe?

yo tengo

    "esModuleInterop": true,
    "resolveJsonModule": true,
    "moduleResolution": "node",

y
const pkgJSON = require('../../package.json');

- Consider using '--resolveJsonModule' to import module with '.json' extensionts(2732)

Ya uso resolveJsonModule.

Si usa WebStorm, también debe reiniciar.

Tengo el mismo problema aquí,

Inicialmente, después de un reinicio, el archivo es verde, luego 3 segundos después se resalta en rojo nuevamente. Entonces, reiniciar en mi caso no soluciona este problema.

Inicialmente, después de un reinicio, el archivo es verde, luego 3 segundos después se resalta en rojo nuevamente. Entonces, reiniciar en mi caso no soluciona este problema.

Tuve el mismo problema, pero porque olvidé incluir la nueva carpeta / archivo ts creado en tsconfig.json

Tuve el mismo problema, pero porque olvidé incluir la nueva carpeta / archivo ts creado en tsconfig.json

¡Lo mismo, gracias hermano!

En mi caso: "Archivo" -> "Invalidar cachés / Reiniciar ..." -> "Invalidar y reiniciar", resolvió el problema

En mi caso, arreglé esto haciendo:

        "moduleResolution": "node"

Esto también puede solucionar el problema:

        "module": "commonjs"

En mi caso, no estoy seguro de si se supone que esto suceda o no, pero tuve que poner mi tsconfig.json en el mismo directorio que mis carpetas out y src .

Aunque agregué moduleResolution: node, el error aún estaba allí. Después de un reinicio de VS, se 'solucionó'

¿Fue útil esta página
0 / 5 - 0 calificaciones