【问题标题】:Import Json file in Typescript : Error in terminal在 Typescript 中导入 Json 文件:终端出错
【发布时间】:2020-01-13 07:30:54
【问题描述】:

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

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

import test from "./test.json";
console.log(test.name);

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

而 JSON 文件 (test.json) 如下:

{"name": "testing",
"age":25}

但是,当我输入“test.”时,typescript 会给出“name”、“age”的选项作为属性。

tsconfig.json 文件如下:

{
  "compilerOptions": {
    "target": "es5", 
    "module": "commonjs",                     
    "strict": true, 
    "moduleResolution": "node",               
    "resolveJsonModule": true,
    "esModuleInterop": true
  }
}

此代码抛出以下错误:

Cannot find module './test.json'. Consider using '--resolveJsonModule' to import module with '.json' extension

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

   -testfolder
     - main.ts
     - tsconfig.json
     - test.json

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

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

提前感谢您的宝贵时间。

【问题讨论】:

  • 您的 json 文件是否与 main.ts 处于同一文件夹级别?如果不是 - 导入路径应该相对于 main.ts
  • 是的,所有文件都在同一个文件夹中。
  • 那么如果您使用 VS Code - 只需重新启动它,应该会有所帮助。
  • 试过了,我也重启了我的电脑,但没有帮助! :(

标签: json typescript visual-studio-code tsconfig


【解决方案1】:

您可以尝试使用此命令启动您的应用

npm run serve --resolveJsonModule

你的错误可能会消失

【讨论】:

    【解决方案2】:

    尼哈尔,

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

    {
    "compilerOptions": {
      /* Basic Options */
      "target": "es5",
      "module": "commonjs",
      "strict": true,
      "esModuleInterop": true,
      "resolveJsonModule": true
    }, 
    "files": ["main.ts"]
    

    }

    当然,添加的“文件”部分假定您的主文件名为“main.ts”。坦率地说,我不确定为什么这有效而您的原始文件无效,但是当我使用 tsconfig.json 文件时,我会尝试将 typescript 需要知道的所有内容放在一个地方。

    【讨论】:

    • 刚刚修改了tsconfig,重启了编辑器,还是不行!!有什么我想念的吗?!
    • 您能告诉我您使用的是哪个编辑器和哪个版本的打字稿吗?
    • 我正在使用 VSCode (v1.37.1) 和 typescript 3.5.3(也使用 typescript 3.6.3 进行了测试)。你呢?你得到什么错误?你只是在编辑器中收到一条消息吗?
    • 如果您将所有内容打包为存储库并发布链接,则更容易弄清楚发生了什么。
    【解决方案3】:

    尝试使用模块。查看此文档https://www.typescriptlang.org/docs/handbook/namespaces-and-modules.html

    // index.ts

    import file from "./file.json";
    
    console.log(file);
    console.log(file.name);
    

    // json.dt.ts

    declare module "*.json" {
      const file: any;
      export default file;
    }
    

    【讨论】:

    • 我也已经尝试过使用类型定义。文件扩展名为“.d.ts”和“.dt.ts”。它给出了同样的错误!
    • 这个测试是用(sublime text 3)完成的,编辑器只在再次打开项目时才进行更改
    • 我刚刚尝试过使用 sublime text 3,但它也给出了同样的错误!
    • 尝试配置一个新的 TypeScript 项目(tsc --init)。添加“resolveJsonModule”和 json 文件的模块(不要修改其他任何内容)。尝试翻译代码(tsc)。如果生成 JavaScript 没有错误,但要遵循警报,请检查文本编辑器设置
    【解决方案4】:

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

    【讨论】:

    • 确保所有文件(包括 tsconfig)都在同一目录中,并且 VSCode 仅在该目录中打开。
    • 是的。这就是我正在尝试的方式,但没有运气:(
    • 剩下一个选项...你是如何运行 TypeScript 的?
    猜你喜欢
    • 2018-10-04
    • 2018-05-14
    • 2020-11-22
    • 2020-06-02
    • 2019-12-11
    • 2018-07-17
    • 2020-09-13
    • 1970-01-01
    相关资源
    最近更新 更多