在 Typescript 中导入 Json 文件:终端出错

Nih*_*har 7 json typescript tsconfig visual-studio-code

我是打字稿新手,有两个问题。

A。我想在 Visual Studio Code (3.6.2) 编辑器中使用以下代码在我的打字稿 (main.ts) 中导入一个简单的 JSON 文件:

import test from "./test.json";
console.log(test.name);
Run Code Online (Sandbox Code Playgroud)

我也尝试过import * as test from "./test.json";

JSON 文件(test.json)如下:

{"name": "testing",
"age":25}
Run Code Online (Sandbox Code Playgroud)

然而,当我输入“test.”时,打字稿给出了“name”、“age”的选项作为属性。

tsconfig.json 文件如下:

{
  "compilerOptions": {
    "target": "es5", 
    "module": "commonjs",                     
    "strict": true, 
    "moduleResolution": "node",               
    "resolveJsonModule": true,
    "esModuleInterop": true
  }
}
Run Code Online (Sandbox Code Playgroud)

这段代码抛出以下错误:

Cannot find module './test.json'. Consider using '--resolveJsonModule' to import module with '.json' extension
Run Code Online (Sandbox Code Playgroud)

由于类型定义是针对旧版本的,所以我没有使用它。我的打字稿版本是3.6.3。上述3个文件位于同一文件夹内。

   -testfolder
     - main.ts
     - tsconfig.json
     - test.json
Run Code Online (Sandbox Code Playgroud)

虽然还有一些其他类似的问题,但我在我的代码中找不到问题!我也用 submile text 3 进行了测试,但它也给出了同样的错误!

b. 如果我想从文件扩展名不同(不是 .json)的文件中解析 json 数据,我应该怎么做?

预先感谢您抽出时间。

Bur*_*ris 6

尼哈尔,

我能够重现你提到的问题。我还可以使用以下tsconfig.json解决问题:

{
"compilerOptions": {
  /* Basic Options */
  "target": "es5",
  "module": "commonjs",
  "strict": true,
  "esModuleInterop": true,
  "resolveJsonModule": true
}, 
"files": ["main.ts"]
Run Code Online (Sandbox Code Playgroud)

}

当然,添加的“文件”部分假定您的主文件名为“main.ts”。坦率地说,我不确定为什么这有效,而你的原始文件却不起作用,但是当我使用tsconfig.json文件时,我尝试将打字稿需要知道的所有内容放在该位置。


小智 0

假设您使用 VSCode 并且所有文件都位于同一目录中,并且直接从该目录打开 VSCode ,那么您的 tsconfig 可以完美运行(至少对于 TS 3.6)。