Typescript: L'option ResolutionJsonModule ne fonctionne pas sans esModuleInterop

Créé le 3 juil. 2018  ·  22Commentaires  ·  Source: microsoft/TypeScript


Version TypeScript: 2.9.2, 3.0.0-dev.20180703


Termes de recherche:

résoudreJsonModule, esModuleInterop

Code

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"
    }
}

Comportement prévisible:

Aucune erreur.

Comportement réel:

Erreur de compilation:

$ 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';
                        ~~~~~~~~~~~~~

Lorsque j'ajoute l'option esModuleInterop à 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"
     }
 }

et remplacez l'instruction d'importation par:

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';

Ça marche. Mais avec l'option esModuleInterop , je dois modifier de nombreuses importations dans mon projet, ce qui n'est pas souhaitable.

Lien Playground:

Problèmes liés:

Bug Fixed

Commentaire le plus utile

Après avoir réglé la valeur "true" pour résoudreJsonModule, j'avais le même problème dans VS Code, (TypeScript 3.2.2, VSCode 1.30.1). Le redémarrage de VS Code a résolu le problème pour moi - je n'ai eu à modifier aucune autre configuration ts

Tous les 22 commentaires

Aussi avec resolveJsonModule , mais sans esModuleInterop , le fichier json apparaît dans le répertoire de sortie.

Après avoir réglé la valeur "true" pour résoudreJsonModule, j'avais le même problème dans VS Code, (TypeScript 3.2.2, VSCode 1.30.1). Le redémarrage de VS Code a résolu le problème pour moi - je n'ai eu à modifier aucune autre configuration ts

Confirmation que le paramètre resolveJsonModule à true dans mon tsconfig.json résolu ce problème.

Le redémarrage manuel de VS Code résout ce problème.

Après avoir réglé la valeur "true" pour résoudreJsonModule, j'avais le même problème dans VS Code, (TypeScript 3.2.2, VSCode 1.30.1). Le redémarrage de VS Code a résolu le problème pour moi - je n'ai eu à modifier aucune autre configuration ts

Merci, cela a fonctionné!

Après avoir réglé la valeur "true" pour résoudreJsonModule, j'avais le même problème dans VS Code, (TypeScript 3.2.2, VSCode 1.30.1). Le redémarrage de VS Code a résolu le problème pour moi - je n'ai eu à modifier aucune autre configuration ts

A travaillé pour moi aussi, merci!

Après avoir réglé la valeur "true" pour résoudreJsonModule, j'avais le même problème dans VS Code, (TypeScript 3.2.2, VSCode 1.30.1). Le redémarrage de VS Code a résolu le problème pour moi - je n'ai eu à modifier aucune autre configuration ts

Cela a vraiment fonctionné. Merci 😃

Après avoir réglé la valeur "true" pour résoudreJsonModule, j'avais le même problème dans VS Code, (TypeScript 3.2.2, VSCode 1.30.1). Le redémarrage de VS Code a résolu le problème pour moi - je n'ai eu à modifier aucune autre configuration ts

Merci, cela a fonctionné comme un charme!

Je vois un comportement similaire dans intellij à ce que @intelliot a décrit ci-dessus pour vs code. Merci pour la suggestion.

Pour ceux qui ont mis à jour leur cible à esnext vous devez ajouter ce qui suit à votre tsconfig :
...
"cible": "esnext",
"moduleResolution": "node",
...

Au départ, après un redémarrage, le fichier est vert, puis 3 secondes plus tard surligné à nouveau en rouge. Donc, redémarrer dans mon cas ne résout pas ce problème.

@ chrisj-skinner pareil avec moi. Je ne sais pas pourquoi cela se produit.

Pourquoi ce problème est-il proche puisque ce problème existe toujours?

j'ai

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

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

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

J'utilise déjà resolutionJsonModule.

Si vous utilisez WebStorm, vous devez également redémarrer.

J'ai le même problème ici,

Au départ, après un redémarrage, le fichier est vert, puis 3 secondes plus tard surligné à nouveau en rouge. Donc, redémarrer dans mon cas ne résout pas ce problème.

Au départ, après un redémarrage, le fichier est vert, puis 3 secondes plus tard surligné à nouveau en rouge. Donc, redémarrer dans mon cas ne résout pas ce problème.

J'ai eu le même problème, mais parce que j'ai oublié d'inclure le nouveau fichier de dossier / ts créé dans le tsconfig.json

J'ai eu le même problème, mais parce que j'ai oublié d'inclure le nouveau fichier de dossier / ts créé dans le tsconfig.json

Pareil, merci mon frère!

Dans mon cas: "Fichier" -> "Invalidate Caches / Restart ..." -> "Invalidate and Restart", a résolu le problème

Dans mon cas, j'ai corrigé cela en faisant:

        "moduleResolution": "node"

Cela peut également résoudre le problème:

        "module": "commonjs"

Dans mon cas, je ne sais pas si cela est supposé se produire ou non, mais j'ai dû mettre mes tsconfig.json dans le même répertoire que mes dossiers out et src .

Bien que j'aie ajouté moduleResolution: node, l'erreur était toujours là. Après un redémarrage VS, il a été `` corrigé ''

Cette page vous a été utile?
0 / 5 - 0 notes