Typescript: Die Option resolveJsonModule funktioniert nicht ohne esModuleInterop

Erstellt am 3. Juli 2018  ·  22Kommentare  ·  Quelle: microsoft/TypeScript


TypeScript-Version: 2.9.2, 3.0.0-dev.20180703


Suchbegriffe:

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

Erwartetes Verhalten:

Keine Fehler.

Tatsächliches Verhalten:

Kompilierungsfehler:

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

Wenn ich esModuleInterop Option zu tsconfig.json hinzufüge:

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

und ändern Sie die Importanweisung in:

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

Es klappt. Aber mit der Option esModuleInterop ich viele Importe in meinem Projekt ändern, was unerwünscht ist.

Spielplatz Link:

Verwandte Themen:

Bug Fixed

Hilfreichster Kommentar

Nachdem ich resolveJsonModule auf "true" gesetzt hatte, hatte ich das gleiche Problem in VS Code (TypeScript 3.2.2, VSCode 1.30.1). Durch einen Neustart von VS Code wurde das Problem für mich behoben. Ich musste keine andere ts-Konfiguration ändern

Alle 22 Kommentare

Auch mit resolveJsonModule , jedoch ohne esModuleInterop , wird die JSON-Datei im Ausgabeverzeichnis angezeigt.

Nachdem ich resolveJsonModule auf "true" gesetzt hatte, hatte ich das gleiche Problem in VS Code (TypeScript 3.2.2, VSCode 1.30.1). Durch einen Neustart von VS Code wurde das Problem für mich behoben. Ich musste keine andere ts-Konfiguration ändern

Bestätigt, dass das Setzen von resolveJsonModule auf true in meinem tsconfig.json dieses Problem behoben hat.

Durch manuelles Neustarten von VS Code wird dieses Problem behoben.

Nachdem ich resolveJsonModule auf "true" gesetzt hatte, hatte ich das gleiche Problem in VS Code (TypeScript 3.2.2, VSCode 1.30.1). Durch einen Neustart von VS Code wurde das Problem für mich behoben. Ich musste keine andere ts-Konfiguration ändern

Danke, es hat funktioniert!

Nachdem ich resolveJsonModule auf "true" gesetzt hatte, hatte ich das gleiche Problem in VS Code (TypeScript 3.2.2, VSCode 1.30.1). Durch einen Neustart von VS Code wurde das Problem für mich behoben. Ich musste keine andere ts-Konfiguration ändern

Hat auch für mich gearbeitet, danke!

Nachdem ich resolveJsonModule auf "true" gesetzt hatte, hatte ich das gleiche Problem in VS Code (TypeScript 3.2.2, VSCode 1.30.1). Durch einen Neustart von VS Code wurde das Problem für mich behoben. Ich musste keine andere ts-Konfiguration ändern

Das hat tatsächlich funktioniert. Danke 😃

Nachdem ich resolveJsonModule auf "true" gesetzt hatte, hatte ich das gleiche Problem in VS Code (TypeScript 3.2.2, VSCode 1.30.1). Durch einen Neustart von VS Code wurde das Problem für mich behoben. Ich musste keine andere ts-Konfiguration ändern

Danke, es hat wie ein Zauber funktioniert!

Ich sehe ein ähnliches Verhalten in Intellij wie das, was @intelliot oben für vs Code beschrieben hat. Danke für den Vorschlag.

Für diejenigen, die ihr Ziel auf esnext aktualisiert haben, müssen Sie Ihrer tsconfig Folgendes
...
"Ziel": "esnext",
"moduleResolution": "node",
...

Nach einem Neustart ist die Datei zunächst grün, dann 3 Sekunden später wieder rot hervorgehoben. Ein Neustart in meinem Fall behebt dieses Problem also nicht.

@ Chrisj-Skinner gleich bei mir. Ich bin mir nicht sicher, warum das passiert.

Warum ist dieses Problem nahe, da dieses Problem immer noch besteht?

ich habe

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

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

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

Ich benutze ResolutionJsonModule bereits.

Wenn Sie WebStorm verwenden, müssen Sie auch neu starten.

Ich habe hier das gleiche Problem,

Nach einem Neustart ist die Datei zunächst grün, dann 3 Sekunden später wieder rot hervorgehoben. Ein Neustart in meinem Fall behebt dieses Problem also nicht.

Nach einem Neustart ist die Datei zunächst grün, dann 3 Sekunden später wieder rot hervorgehoben. Ein Neustart in meinem Fall behebt dieses Problem also nicht.

Ich hatte das gleiche Problem, aber das, weil ich vergessen habe, den neu erstellten Ordner / ts in die Datei tsconfig.json aufzunehmen

Ich hatte das gleiche Problem, aber das, weil ich vergessen habe, den neu erstellten Ordner / ts in die Datei tsconfig.json aufzunehmen

Gleich, danke Bruder!

In meinem Fall: "Datei" -> "Caches ungültig machen / neu starten ..." -> "Ungültig machen und neu starten", das Problem wurde behoben

In meinem Fall habe ich Folgendes behoben:

        "moduleResolution": "node"

Dies kann auch das Problem beheben:

        "module": "commonjs"

Für meinen Fall bin ich mir nicht sicher, ob dies passieren soll oder nicht, aber ich musste meine tsconfig.json in dasselbe Verzeichnis wie meine Ordner out und src legen.

Obwohl ich moduleResolution: node hinzugefügt habe, war der Fehler immer noch vorhanden. Nach einem VS-Neustart wurde es 'behoben'

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen