Typescript: Параметр resolveJsonModule не работает без esModuleInterop

Созданный на 3 июл. 2018  ·  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). Перезапуск VS Code решил проблему для меня - мне не пришлось изменять какую-либо другую конфигурацию ts

Все 22 Комментарий

Также с resolveJsonModule , но без esModuleInterop , файл json появляется в каталоге вывода.

После установки параметра resolveJsonModule в значение «true» у меня возникла такая же проблема в VS Code (TypeScript 3.2.2, VSCode 1.30.1). Перезапуск VS Code решил проблему для меня - мне не пришлось изменять какую-либо другую конфигурацию ts

Подтверждено, что установка resolveJsonModule на true в моем 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, подобное тому, что описал выше @intelliot для кода vs. Спасибо за предложение.

Для тех, кто обновил свою цель до 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 секунды снова выделяется красным. Поэтому перезапуск в моем случае не решает эту проблему.

У меня была такая же проблема, но это потому, что я забыл включить новую созданную папку / ts файл в tsconfig.json

У меня была такая же проблема, но это потому, что я забыл включить новую созданную папку / ts файл в tsconfig.json

То же самое, спасибо братан!

В моем случае: «File» -> «Invalidate Caches / Restart ...» -> «Invalidate and Restart», проблема решена.

В моем случае я исправил это, выполнив:

        "moduleResolution": "node"

Это также может решить проблему:

        "module": "commonjs"

В моем случае я не уверен, должно ли это случиться, но мне пришлось поместить свой tsconfig.json в тот же каталог, что и мои папки out и src .

Хотя я добавил модуль moduleResolution: node, ошибка все еще существовала. После перезапуска VS это было исправлено

Была ли эта страница полезной?
0 / 5 - 0 рейтинги

Смежные вопросы

weswigham picture weswigham  ·  3Комментарии

siddjain picture siddjain  ·  3Комментарии

jbondc picture jbondc  ·  3Комментарии

MartynasZilinskas picture MartynasZilinskas  ·  3Комментарии

dlaberge picture dlaberge  ·  3Комментарии