首页 文章

在Node Typescript中导入JSON文件

提问于
浏览
1

我尝试过在网上找到的所有解决方案,但似乎我无法解决我的具体问题 .

我试图将静态.json文件导入节点控制器,所有这些都在TypeScript中 .

我得到的错误是

找不到模块'./data.map.json'

我已经检查了100次路径,这绝对是正确的 . 我已经尝试了require和import的每个组合,以及我在tsconfig.json中找到的每个选项,这是我认为问题所在 .

下面是一个简洁的示例,显示了我的设置 . 如何在Typescript应用程序中导入静态json文件?

调节器

import * as data from "./data.map.json";

typings.d.ts

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

tsconfig.json

{
  "compilerOptions": {
    "outDir": "build",
    "target": "es6",
    "module": "commonjs",
    "moduleResolution": "node",
    "sourceMap": true,
    "typeRoots": ["node_modules/@types"],
    "paths": {
      "*": ["typings.d.ts"]
    }
  },
  "files": [
    "typings.d.ts"
  ],
  "include": [
    "src/**/**.ts",
    "test/**/**.ts"
  ],
  "exclude": [
    "node_modules"
  ],
  "compileOnSave": false
}

2 回答

  • 1

    从TS 2.9 added support for well typed json imports开始,可能不再需要解决方法 . 只需添加:

    {
      "compilerOptions": {
        "resolveJsonModule": true
      }
    }
    

    tsconfig.jsonjsconfig.json 中 . 使用此方法,您当前必须使用带有 .json 文件扩展名的完整路径:

    import * as data from "./data.map.json";
    

    代替:

    import * as data from "./data.map";
    
  • 0

    修复了这一段时间之前忘了在这里发布答案 . 我没有尝试导入json文件,而只是从typescript文件中导出json对象,而且效果很好

    将导入行更改为

    import {default as map} from "./data.map";
    

    和文件 data.map.ts

    export default {
      "key": "value"
    }
    

    你可以像你期望的那样访问它

    map["key"]   // gives you "value"
    

相关问题