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
์ต์
์ ์ฌ์ฉํ๋ฉด ํ๋ก์ ํธ์์ ๋ง์ ๊ฐ์ ธ ์ค๊ธฐ๋ฅผ ๋ณ๊ฒฝํด์ผํ๋๋ฐ ์ด๋ ๋ฐ๋์งํ์ง ์์ต๋๋ค.
ํ๋ ์ด ๊ทธ๋ผ์ด๋ ๋งํฌ :
๊ด๋ จ ๋ฌธ์ :
๋ํ 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 ๊ตฌ์ฑ์ ๋ณ๊ฒฝํ ํ์๊ฐ ์์์ต๋๋ค.
๊ณ ๋ง์์, ๋งค๋ ฅ ๊ฐ์์ด์!
๋๋ @intelliot ์ฝ๋ ๋ ์์์ ์ค๋ช ํ ๊ฒ๊ณผ ์ธ IntelliJ์์ ๋น์ทํ ๋์์ ์ฐธ์กฐํ์ญ์์ค. ์ ์ ํด ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค.
๋์์ 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"
์ ๊ฒฝ์ฐ์ ์ด๋ฐ ์ผ์ด ์ผ์ด๋ ์ง ์ฌ๋ถ๋ ํ์คํ์ง ์์ง๋ง out
๋ฐ src
ํด๋์ ๋์ผํ ๋๋ ํ ๋ฆฌ์ tsconfig.json
๋ฅผ ๋ฃ์ด์ผํ์ต๋๋ค.
moduleResolution : node๋ฅผ ์ถ๊ฐํ์ง๋ง ์ฌ์ ํ ์ค๋ฅ๊ฐ ๋ฐ์ํ์ต๋๋ค. VS ์ฌ์์ ํ '์์ '๋์์ต๋๋ค.
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
resolveJsonModule์ "true"๋ก ์ค์ ํ ํ VS Code (TypeScript 3.2.2, VSCode 1.30.1)์์ ๋์ผํ ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ต๋๋ค. VS Code๋ฅผ ๋ค์ ์์ํ๋ฉด ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋์์ต๋๋ค. ๋ค๋ฅธ TS ๊ตฌ์ฑ์ ๋ณ๊ฒฝํ ํ์๊ฐ ์์์ต๋๋ค.