Typescript: Opsi resolJsonModule tidak berfungsi tanpa esModuleInterop

Dibuat pada 3 Jul 2018  ·  22Komentar  ·  Sumber: microsoft/TypeScript


Versi TypeScript: 2.9.2, 3.0.0-dev.20180703


Istilah Pencarian:

resolJsonModule, esModuleInterop

Kode

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

Perilaku yang diharapkan:

Tidak ada kesalahan.

Perilaku sebenarnya:

Kesalahan kompilasi:

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

Ketika saya menambahkan opsi esModuleInterop ke 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"
     }
 }

dan ubah pernyataan impor menjadi:

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

berhasil. Tetapi dengan opsi esModuleInterop saya perlu mengubah banyak impor dalam proyek saya, yang tidak diinginkan.

Tautan Taman Bermain:

Masalah Terkait:

Bug Fixed

Komentar yang paling membantu

Setelah menetapkan resolJsonModule ke "true", saya mengalami masalah yang sama di VS Code, (TypeScript 3.2.2, VSCode 1.30.1). Restart VS Code menyelesaikan masalah untuk saya - Saya tidak perlu mengubah konfigurasi ts lainnya

Semua 22 komentar

Juga dengan resolveJsonModule , tetapi tanpa esModuleInterop , file json muncul di direktori keluaran.

Setelah menetapkan resolJsonModule ke "true", saya mengalami masalah yang sama di VS Code, (TypeScript 3.2.2, VSCode 1.30.1). Restart VS Code menyelesaikan masalah untuk saya - Saya tidak perlu mengubah konfigurasi ts lainnya

Dikonfirmasi bahwa pengaturan resolveJsonModule menjadi true dalam tsconfig.json menyelesaikan masalah ini.

Memulai ulang VS Code secara manual menyelesaikan masalah ini.

Setelah menetapkan resolJsonModule ke "true", saya mengalami masalah yang sama di VS Code, (TypeScript 3.2.2, VSCode 1.30.1). Restart VS Code menyelesaikan masalah untuk saya - Saya tidak perlu mengubah konfigurasi ts lainnya

Terima kasih, berhasil!

Setelah menetapkan resolJsonModule ke "true", saya mengalami masalah yang sama di VS Code, (TypeScript 3.2.2, VSCode 1.30.1). Restart VS Code menyelesaikan masalah untuk saya - Saya tidak perlu mengubah konfigurasi ts lainnya

Bekerja untuk saya juga, terima kasih!

Setelah menetapkan resolJsonModule ke "true", saya mengalami masalah yang sama di VS Code, (TypeScript 3.2.2, VSCode 1.30.1). Restart VS Code menyelesaikan masalah untuk saya - Saya tidak perlu mengubah konfigurasi ts lainnya

Ini benar-benar berhasil. Terima kasih 😃

Setelah menetapkan resolJsonModule ke "true", saya mengalami masalah yang sama di VS Code, (TypeScript 3.2.2, VSCode 1.30.1). Restart VS Code menyelesaikan masalah untuk saya - Saya tidak perlu mengubah konfigurasi ts lainnya

Terima kasih, Ini bekerja seperti pesona!

Saya melihat perilaku serupa di intellij dengan apa yang dijelaskan @intelliot di atas untuk kode vs. Terima kasih untuk sarannya.

Bagi mereka yang telah memperbarui target mereka menjadi esnext Anda perlu menambahkan yang berikut ini ke tsconfig Anda:
...
"target": "esnext",
"moduleResolution": "node",
...

Awalnya setelah restart file berwarna hijau, kemudian 3 detik kemudian disorot merah lagi. Jadi memulai ulang dalam kasus saya tidak memperbaiki masalah ini.

@ chrisj-skinner sama dengan saya. Tidak yakin mengapa ini terjadi.

Mengapa masalah ini ditutup karena masalah ini masih ada?

saya sudah

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

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

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

Saya sudah menggunakan resolJsonModule.

Jika Anda menggunakan WebStorm, Anda juga harus memulai ulang.

Saya memiliki masalah yang sama di sini,

Awalnya setelah restart file berwarna hijau, kemudian 3 detik kemudian disorot merah lagi. Jadi memulai ulang dalam kasus saya tidak memperbaiki masalah ini.

Awalnya setelah restart file berwarna hijau, kemudian 3 detik kemudian disorot merah lagi. Jadi memulai ulang dalam kasus saya tidak memperbaiki masalah ini.

Saya memiliki masalah yang sama, tetapi itu karena saya lupa menyertakan file folder / ts yang baru dibuat di tsconfig.json

Saya memiliki masalah yang sama, tetapi itu karena saya lupa menyertakan file folder / ts yang baru dibuat di tsconfig.json

Sama, terima kasih bro!

Dalam kasus saya: "File" -> "Invalidate Caches / Restart ..." -> "Invalidate and Restart", selesaikan masalah

Dalam kasus saya, saya memperbaikinya dengan melakukan:

        "moduleResolution": "node"

Ini juga dapat memperbaiki masalah:

        "module": "commonjs"

Untuk kasus saya, saya tidak yakin apakah ini seharusnya terjadi atau tidak tetapi, saya harus meletakkan tsconfig.json di direktori yang sama dengan folder out dan src .

Meskipun saya menambahkan moduleResolution: node, kesalahannya masih ada. Setelah VS restart, itu 'diperbaiki'

Apakah halaman ini membantu?
0 / 5 - 0 peringkat

Masalah terkait

CyrusNajmabadi picture CyrusNajmabadi  ·  3Komentar

siddjain picture siddjain  ·  3Komentar

zhuravlikjb picture zhuravlikjb  ·  3Komentar

blendsdk picture blendsdk  ·  3Komentar

wmaurer picture wmaurer  ·  3Komentar