Typescript: 没有esModuleInterop的情况下,resolveJsonModule选项不起作用

创建于 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"
     }
 }

并将import语句更改为:

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)。 重新启动VS Code为我解决了这个问题-我不必更改任何其他ts配置

所有22条评论

同样具有resolveJsonModule ,但没有esModuleInterop ,json文件将出现在输出目录中。

将resolveJsonModule设置为“ true”之后,我在VS Code中遇到了相同的问题(TypeScript 3.2.2,VSCode 1.30.1)。 重新启动VS Code为我解决了这个问题-我不必更改任何其他ts配置

确认在我的tsconfig.json中将resolveJsonModuletrue tsconfig.json解决此问题。

手动重新启动VS Code可解决此问题。

将resolveJsonModule设置为“ true”之后,我在VS Code中遇到了相同的问题(TypeScript 3.2.2,VSCode 1.30.1)。 重新启动VS Code为我解决了这个问题-我不必更改任何其他ts配置

谢谢,它奏效了!

将resolveJsonModule设置为“ true”之后,我在VS Code中遇到了相同的问题(TypeScript 3.2.2,VSCode 1.30.1)。 重新启动VS Code为我解决了这个问题-我不必更改任何其他ts配置

也为我工作,谢谢!

将resolveJsonModule设置为“ true”之后,我在VS Code中遇到了相同的问题(TypeScript 3.2.2,VSCode 1.30.1)。 重新启动VS Code为我解决了这个问题-我不必更改任何其他ts配置

这确实有效。 谢谢😃

将resolveJsonModule设置为“ true”之后,我在VS Code中遇到了相同的问题(TypeScript 3.2.2,VSCode 1.30.1)。 重新启动VS Code为我解决了这个问题-我不必更改任何其他ts配置

谢谢,它像一个魅力!

我在intellij中看到的行为与上述针对vs代码的@intelliot类似。 谢谢你的建议。

对于将目标更新为esnext您需要在tsconfig中添加以下
...
“ target”:“ esnext”,
“ moduleResolution”:“节点”,
...

重新启动后,文件最初为绿色,然后3秒钟后再次以红色突出显示。 因此,就我而言,重新启动无法解决此问题。

@ chrisj-skinner和我一样。 不知道为什么会这样。

为什么此问题仍然存在,为什么此问题仍然存在?

我有

    "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.json放在与outsrc文件夹相同的目录中。

尽管我添加了moduleResolution:节点,但错误仍然存​​在。 VS重新启动后,它被“修复”

此页面是否有帮助?
0 / 5 - 0 等级

相关问题

bgrieder picture bgrieder  ·  3评论

kyasbal-1994 picture kyasbal-1994  ·  3评论

fwanicka picture fwanicka  ·  3评论

wmaurer picture wmaurer  ·  3评论

MartynasZilinskas picture MartynasZilinskas  ·  3评论