Typescript: オプションresolveJsonModuleはesModuleInteropなしでは機能しません

作成日 2018年07月03日  ·  22コメント  ·  ソース: microsoft/TypeScript


TypeScriptバージョン: 2.9.2、3.0.0-dev.20180703


検索ワード:

resolveJsonModule、esModuleInterop

コード

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

予想される行動:

エラーはありません。

実際の動作:

コンパイルエラー:

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

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

インポートステートメントを次のように変更します。

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

できます。 しかし、 esModuleInteropオプションを使用すると、プロジェクト内の多くのインポートを変更する必要があります。これは望ましくありません。

遊び場リンク:

関連する問題:

Bug Fixed

最も参考になるコメント

resolveJsonModuleを「true」に設定した後、VS Code(TypeScript 3.2.2、VSCode 1.30.1)でも同じ問題が発生していました。 VSCodeを再起動すると問題が解決しました-他のts設定を変更する必要はありませんでした

全てのコメント22件

また、 resolveJsonModuleを使用しますが、 esModuleInterop場合、jsonファイルが出力ディレクトリに表示されます。

resolveJsonModuleを「true」に設定した後、VS Code(TypeScript 3.2.2、VSCode 1.30.1)でも同じ問題が発生していました。 VSCodeを再起動すると問題が解決しました-他のts設定を変更する必要はありませんでした

設定することが確認さresolveJsonModuleするtrue私にtsconfig.jsonこの問題を解決しました。

VS Codeを手動で再起動すると、この問題が解決します。

resolveJsonModuleを「true」に設定した後、VS Code(TypeScript 3.2.2、VSCode 1.30.1)でも同じ問題が発生していました。 VSCodeを再起動すると問題が解決しました-他のts設定を変更する必要はありませんでした

ありがとう、うまくいきました!

resolveJsonModuleを「true」に設定した後、VS Code(TypeScript 3.2.2、VSCode 1.30.1)でも同じ問題が発生していました。 VSCodeを再起動すると問題が解決しました-他のts設定を変更する必要はありませんでした

私のためにも働いてくれてありがとう!

resolveJsonModuleを「true」に設定した後、VS Code(TypeScript 3.2.2、VSCode 1.30.1)でも同じ問題が発生していました。 VSCodeを再起動すると問題が解決しました-他のts設定を変更する必要はありませんでした

これは実際に機能しました。 ありがとう😃

resolveJsonModuleを「true」に設定した後、VS Code(TypeScript 3.2.2、VSCode 1.30.1)でも同じ問題が発生していました。 VSCodeを再起動すると問題が解決しました-他のts設定を変更する必要はありませんでした

おかげで、それは魅力のように働きました!

intellijには、 vscodeについて上記で説明した@intelliotと同様の動作が見られます。 提案をありがとう。

ターゲットをesnext更新した場合は、 tsconfigに以下を追加する必要があります。
..。
"ターゲット": "esnext"、
"moduleResolution": "ノード"、
..。

再起動後、最初はファイルが緑色になり、3秒後に再び赤色で強調表示されます。 したがって、私の場合は再起動してもこの問題は修正されません。

@ chrisj-私と同じスキナー。 なぜこれが起こっているのかわからない。

この問題がまだ存在するのに、なぜこの問題は近いのですか?

私は持っています

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

そして
const pkgJSON = require('../../package.json');

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

私はすでにresolveJsonModuleを使用しています。

WebStormを使用する場合は、再起動する必要があります。

私はここで同じ問題を抱えています、

再起動後、最初はファイルが緑色になり、3秒後に再び赤色で強調表示されます。 したがって、私の場合は再起動してもこの問題は修正されません。

再起動後、最初はファイルが緑色になり、3秒後に再び赤色で強調表示されます。 したがって、私の場合は再起動してもこの問題は修正されません。

同じ問題が発生しましたが、tsconfig.jsonに新しく作成したフォルダー/ tsファイルを含めるのを忘れたためです。

同じ問題が発生しましたが、tsconfig.jsonに新しく作成したフォルダー/ tsファイルを含めるのを忘れたためです。

同じ、ありがとう仲間!

私の場合:「ファイル」->「キャッシュの無効化/再起動...」->「無効化して再起動」、問題を解決しました

私の場合、次のようにしてこれを修正しました。

        "moduleResolution": "node"

これで問題を解決することもできます。

        "module": "commonjs"

私の場合、これが発生するかどうかはわかりませんが、 tsconfig.jsonoutおよびsrcフォルダと同じディレクトリに配置する必要がありました。

moduleResolution:nodeを追加しましたが、エラーはまだありました。 VSの再起動後、「修正済み」になりました

このページは役に立ちましたか?
0 / 5 - 0 評価