рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕рдВрд╕реНрдХрд░рдг: 2.9.2, 3.0.0-dev.20180703
рдЦреЛрдЬ рд╢рдмреНрдж:
solutionJsonModule, 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 рдлрд╝рд╛рдЗрд▓ рдЖрдЙрдЯрдкреБрдЯ рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА рдореЗрдВ рджрд┐рдЦрд╛рдИ рджреЗрддреА рд╣реИред
"рд╕рдЪ" рдХреЗ рд▓рд┐рдП рд╕рдорд╛рдзрд╛рдирдЬреЛрдирдореЙрдбрд▓ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдореИрдВ рд╡реАрдПрд╕ рдХреЛрдб рдореЗрдВ рдПрдХ рд╣реА рдореБрджреНрджрд╛ рд░рд╣рд╛ рдерд╛, (рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ 3.2.2, рд╡реАрдПрд╕рдХреЛрдб 1.30.1)ред рд╡реАрдПрд╕ рдХреЛрдб рдХреЛ рдлрд┐рд░ рд╕реЗ рд╢реБрд░реВ рдХрд░рдиреЗ рд╕реЗ рдореЗрд░реЗ рд▓рд┐рдП рд╕рдорд╕реНрдпрд╛ рд╣рд▓ рд╣реЛ рдЧрдИ - рдореБрдЭреЗ рдХрд┐рд╕реА рдЕрдиреНрдп ts рдХреЙрдиреНрдлрд┐рдЧрд░ рдХреЛ рдмрджрд▓рдирд╛ рдирд╣реАрдВ рдерд╛
рдкреБрд╖реНрдЯрд┐ рдХреА рдХрд┐ resolveJsonModule
рд╕реЗ true
рдореЗрд░реЗ tsconfig.json
рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рд╣реЛ рдЧрдпрд╛ред
VS рдХреЛрдб рдХреЛ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдкреБрдирд░рд╛рд░рдВрдн рдХрд░рдиреЗ рд╕реЗ рдпрд╣ рд╕рдорд╕реНрдпрд╛ рд╣рд▓ рд╣реЛ рдЬрд╛рддреА рд╣реИред
"рд╕рдЪ" рдХреЗ рд▓рд┐рдП рд╕рдорд╛рдзрд╛рдирдЬреЛрдирдореЙрдбрд▓ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдореИрдВ рд╡реАрдПрд╕ рдХреЛрдб рдореЗрдВ рдПрдХ рд╣реА рдореБрджреНрджрд╛ рд░рд╣рд╛ рдерд╛, (рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ 3.2.2, рд╡реАрдПрд╕рдХреЛрдб 1.30.1)ред рд╡реАрдПрд╕ рдХреЛрдб рдХреЛ рдлрд┐рд░ рд╕реЗ рд╢реБрд░реВ рдХрд░рдиреЗ рд╕реЗ рдореЗрд░реЗ рд▓рд┐рдП рд╕рдорд╕реНрдпрд╛ рд╣рд▓ рд╣реЛ рдЧрдИ - рдореБрдЭреЗ рдХрд┐рд╕реА рдЕрдиреНрдп ts рдХреЙрдиреНрдлрд┐рдЧрд░ рдХреЛ рдмрджрд▓рдирд╛ рдирд╣реАрдВ рдерд╛
рдзрдиреНрдпрд╡рд╛рдж, рдпрд╣ рдХрд╛рдо рдХрд┐рдпрд╛!
"рд╕рдЪ" рдХреЗ рд▓рд┐рдП рд╕рдорд╛рдзрд╛рдирдЬреЛрдирдореЙрдбрд▓ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдореИрдВ рд╡реАрдПрд╕ рдХреЛрдб рдореЗрдВ рдПрдХ рд╣реА рдореБрджреНрджрд╛ рд░рд╣рд╛ рдерд╛, (рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ 3.2.2, рд╡реАрдПрд╕рдХреЛрдб 1.30.1)ред рд╡реАрдПрд╕ рдХреЛрдб рдХреЛ рдлрд┐рд░ рд╕реЗ рд╢реБрд░реВ рдХрд░рдиреЗ рд╕реЗ рдореЗрд░реЗ рд▓рд┐рдП рд╕рдорд╕реНрдпрд╛ рд╣рд▓ рд╣реЛ рдЧрдИ - рдореБрдЭреЗ рдХрд┐рд╕реА рдЕрдиреНрдп ts рдХреЙрдиреНрдлрд┐рдЧрд░ рдХреЛ рдмрджрд▓рдирд╛ рдирд╣реАрдВ рдерд╛
рдореЗрд░реЗ рд▓рд┐рдП рднреА рдХрд╛рдо рдХрд┐рдпрд╛, рдзрдиреНрдпрд╡рд╛рдж!
"рд╕рдЪ" рдХреЗ рд▓рд┐рдП рд╕рдорд╛рдзрд╛рдирдЬреЛрдирдореЙрдбрд▓ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдореИрдВ рд╡реАрдПрд╕ рдХреЛрдб рдореЗрдВ рдПрдХ рд╣реА рдореБрджреНрджрд╛ рд░рд╣рд╛ рдерд╛, (рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ 3.2.2, рд╡реАрдПрд╕рдХреЛрдб 1.30.1)ред рд╡реАрдПрд╕ рдХреЛрдб рдХреЛ рдлрд┐рд░ рд╕реЗ рд╢реБрд░реВ рдХрд░рдиреЗ рд╕реЗ рдореЗрд░реЗ рд▓рд┐рдП рд╕рдорд╕реНрдпрд╛ рд╣рд▓ рд╣реЛ рдЧрдИ - рдореБрдЭреЗ рдХрд┐рд╕реА рдЕрдиреНрдп ts рдХреЙрдиреНрдлрд┐рдЧрд░ рдХреЛ рдмрджрд▓рдирд╛ рдирд╣реАрдВ рдерд╛
рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХрд╛рдо рдХрд┐рдпрд╛ред рдзрдиреНрдпрд╡рд╛рдж ЁЯШГ
"рд╕рдЪ" рдХреЗ рд▓рд┐рдП рд╕рдорд╛рдзрд╛рдирдЬреЛрдирдореЙрдбрд▓ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдореИрдВ рд╡реАрдПрд╕ рдХреЛрдб рдореЗрдВ рдПрдХ рд╣реА рдореБрджреНрджрд╛ рд░рд╣рд╛ рдерд╛, (рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ 3.2.2, рд╡реАрдПрд╕рдХреЛрдб 1.30.1)ред рд╡реАрдПрд╕ рдХреЛрдб рдХреЛ рдлрд┐рд░ рд╕реЗ рд╢реБрд░реВ рдХрд░рдиреЗ рд╕реЗ рдореЗрд░реЗ рд▓рд┐рдП рд╕рдорд╕реНрдпрд╛ рд╣рд▓ рд╣реЛ рдЧрдИ - рдореБрдЭреЗ рдХрд┐рд╕реА рдЕрдиреНрдп ts рдХреЙрдиреНрдлрд┐рдЧрд░ рдХреЛ рдмрджрд▓рдирд╛ рдирд╣реАрдВ рдерд╛
рдзрдиреНрдпрд╡рд╛рдж, рдпрд╣ рдПрдХ рдЖрдХрд░реНрд╖рдг рдХреА рддрд░рд╣ рдХрд╛рдо рдХрд┐рдпрд╛!
рдореИрдВ intellij рдореЗрдВ рдЗрд╕реА рддрд░рд╣ рдХреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рджреЗрдЦрддрд╛ рд╣реВрдВ рдХрд┐ рдХреНрдпрд╛ @intelliot рдмрдирд╛рдо рдХреЛрдб рдХреЗ рд▓рд┐рдП рдКрдкрд░ рд╡рд░реНрдгрд┐рдд рд╣реИред рд╕рд▓рд╛рд╣ рдХреЗ рд▓рд┐рдпреЗ рдзрдиреНрдпрд╡рд╛рджред
рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЬрд┐рдиреНрд╣реЛрдВрдиреЗ рдЕрдкрдиреЗ рд▓рдХреНрд╖реНрдп рдХреЛ esnext
рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рд╣реИ, рдЖрдкрдХреЛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛ рдЕрдкрдиреЗ tsconfig рдореЗрдВ рдЬреЛрдбрд╝рдирд╛ рд╣реЛрдЧрд╛ :
...
"рд▓рдХреНрд╖реНрдп": "рдПрд╕реНрдиреЗрдХреНрд╕реНрдЯ",
"рдореЙрдбреНрдпреВрд▓Resolution": "рдиреЛрдб",
...
рдкреНрд░рд╛рд░рдВрдн рдореЗрдВ рдлрд╝рд╛рдЗрд▓ рдХреЛ рд╣рд░рд╛ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдлрд┐рд░ 3 рд╕реЗрдХрдВрдб рдмрд╛рдж рдлрд┐рд░ рд╕реЗ рд▓рд╛рд▓ рд░рдВрдЧ рдореЗрдВ рд╣рд╛рдЗрд▓рд╛рдЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ред рдЗрд╕рд▓рд┐рдП рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдкреБрдирдГ рдЖрд░рдВрдн рдХрд░рдиреЗ рд╕реЗ рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдареАрдХ рдирд╣реАрдВ рд╣реЛрддреАред
@ рдореЗрд░реЗ рд╕рд╛рде рдХреНрд░рд┐рд╕-рд╕реНрдХрд┐рдирд░ред рдпрдХреАрди рдирд╣реАрдВ рд╣реЛ рд░рд╣рд╛ рдХрд┐ рдРрд╕рд╛ рдХреНрдпреЛрдВ рд╣реЛ рд░рд╣рд╛ рд╣реИред
рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдЕрднреА рднреА рдореМрдЬреВрдж рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдХрд░реАрдм рдХреНрдпреЛрдВ рд╣реИ?
рдореЗрд░реЗ рдкрд╛рд╕ рд╣реИ
"esModuleInterop": true,
"resolveJsonModule": true,
"moduleResolution": "node",
рддрдерд╛
const pkgJSON = require('../../package.json');
- Consider using '--resolveJsonModule' to import module with '.json' extensionts(2732)
рдореИрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╕рдорд╛рдзрд╛рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВред
рдпрджрд┐ рдЖрдк WebStorm рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдЖрдк рднреА рдкреБрдирдГ рдЖрд░рдВрдн рдХрд░реЗрдВрдЧреЗред
рдореИрдВ рдпрд╣рд╛рдБ рдПрдХ рд╣реА рдореБрджреНрджрд╛ рд╣реИ,
рдкреНрд░рд╛рд░рдВрдн рдореЗрдВ рдлрд╝рд╛рдЗрд▓ рдХреЛ рд╣рд░рд╛ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдлрд┐рд░ 3 рд╕реЗрдХрдВрдб рдмрд╛рдж рдлрд┐рд░ рд╕реЗ рд▓рд╛рд▓ рд░рдВрдЧ рдореЗрдВ рд╣рд╛рдЗрд▓рд╛рдЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ред рдЗрд╕рд▓рд┐рдП рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдкреБрдирдГ рдЖрд░рдВрдн рдХрд░рдиреЗ рд╕реЗ рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдареАрдХ рдирд╣реАрдВ рд╣реЛрддреАред
рдкреНрд░рд╛рд░рдВрдн рдореЗрдВ рдлрд╝рд╛рдЗрд▓ рдХреЛ рд╣рд░рд╛ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдлрд┐рд░ 3 рд╕реЗрдХрдВрдб рдмрд╛рдж рдлрд┐рд░ рд╕реЗ рд▓рд╛рд▓ рд░рдВрдЧ рдореЗрдВ рд╣рд╛рдЗрд▓рд╛рдЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ред рдЗрд╕рд▓рд┐рдП рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдкреБрдирдГ рдЖрд░рдВрдн рдХрд░рдиреЗ рд╕реЗ рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдареАрдХ рдирд╣реАрдВ рд╣реЛрддреАред
рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рд╣реА рдореБрджреНрджрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдХреНрдпреЛрдВрдХрд┐ рдореИрдВ tsconfig.json рдореЗрдВ рдирдП рдмрдирд╛рдП рдЧрдП рдлрд╝реЛрд▓реНрдбрд░ / ts рдлрд╝рд╛рдЗрд▓ рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░рдирд╛ рднреВрд▓ рдЧрдпрд╛ рдерд╛
рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рд╣реА рдореБрджреНрджрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдХреНрдпреЛрдВрдХрд┐ рдореИрдВ tsconfig.json рдореЗрдВ рдирдП рдмрдирд╛рдП рдЧрдП рдлрд╝реЛрд▓реНрдбрд░ / ts рдлрд╝рд╛рдЗрд▓ рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░рдирд╛ рднреВрд▓ рдЧрдпрд╛ рдерд╛
рд╡рд╣реА, рдзрдиреНрдпрд╡рд╛рдж рднрд╛рдИ!
рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ: "рдлрд╝рд╛рдЗрд▓" -> "рдЕрдорд╛рдиреНрдп рдХреИрд╢ / рдкреБрдирдГ рдкреНрд░рд╛рд░рдВрдн рдХрд░реЗрдВ ..." -> "рдЕрдорд╛рдиреНрдп рдФрд░ рдкреБрдирдГ рдкреНрд░рд╛рд░рдВрдн рдХрд░реЗрдВ", рд╕рдорд╕реНрдпрд╛ рд╣рд▓ рд╣реЛ рдЧрдИ
рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдореИрдВрдиреЗ рдпрд╣ рдХрд░рдХреЗ рддрдп рдХрд┐рдпрд╛:
"moduleResolution": "node"
рдЗрд╕рд╕реЗ рд╕рдорд╕реНрдпрд╛ рднреА рдареАрдХ рд╣реЛ рд╕рдХрддреА рд╣реИ:
"module": "commonjs"
рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдХреЗ рд▓рд┐рдП, рдореИрдВ рдЕрдирд┐рд╢реНрдЪрд┐рдд рд╣реВрдВ рдХрд┐ рдЕрдЧрд░ рдРрд╕рд╛ рд╣реБрдЖ рдпрд╛ рдирд╣реАрдВ, рд▓реЗрдХрд┐рди, рдореБрдЭреЗ рдЕрдкрдиреЗ tsconfig.json
рдХреЛ рдЙрд╕реА рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рдЕрдкрдиреЗ out
рдФрд░ src
рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рд░рдЦрдирд╛ рд╣реЛрдЧрд╛ред
рд╣рд╛рд▓рд╛рдБрдХрд┐ рдореИрдВрдиреЗ рдореЙрдбреНрдпреВрд▓ рдХреЛ рдЬреЛрдбрд╝рд╛ рд╣реИред рд╕рдВрдкрд░реНрдХ: рдиреЛрдб, рддреНрд░реБрдЯрд┐ рдЕрднреА рднреА рдереАред рд╡реАрдПрд╕ рд░рд┐рд╕реНрдЯрд╛рд░реНрдЯ рдХреЗ рдмрд╛рдж рдЗрд╕реЗ 'рдлрд┐рдХреНрд╕' рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
"рд╕рдЪ" рдХреЗ рд▓рд┐рдП рд╕рдорд╛рдзрд╛рдирдЬреЛрдирдореЙрдбрд▓ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдореИрдВ рд╡реАрдПрд╕ рдХреЛрдб рдореЗрдВ рдПрдХ рд╣реА рдореБрджреНрджрд╛ рд░рд╣рд╛ рдерд╛, (рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ 3.2.2, рд╡реАрдПрд╕рдХреЛрдб 1.30.1)ред рд╡реАрдПрд╕ рдХреЛрдб рдХреЛ рдлрд┐рд░ рд╕реЗ рд╢реБрд░реВ рдХрд░рдиреЗ рд╕реЗ рдореЗрд░реЗ рд▓рд┐рдП рд╕рдорд╕реНрдпрд╛ рд╣рд▓ рд╣реЛ рдЧрдИ - рдореБрдЭреЗ рдХрд┐рд╕реА рдЕрдиреНрдп ts рдХреЙрдиреНрдлрд┐рдЧрд░ рдХреЛ рдмрджрд▓рдирд╛ рдирд╣реАрдВ рдерд╛