我尝试过在网上找到的所有解决方案,但似乎无法解决我的问题。
我正在尝试将静态.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
}
答案 0 :(得分:4)
自TS 2.9 added support for well typed json imports以来,可能不再需要解决方法。只需添加:
{
"compilerOptions": {
"resolveJsonModule": true
}
}
在您的tsconfig.json
或jsconfig.json
中。使用此方法,您当前必须使用带有.json
文件扩展名的完整路径:
import * as data from "./data.map.json";
而不是:
import * as data from "./data.map";
答案 1 :(得分:0)
修正了这段时间之前忘了在这里发布答案。我没有尝试导入json文件,而只是从typescript文件中导出一个json对象,而且效果很好
将导入行更改为
import {default as map} from "./data.map";
,文件data.map.ts
为
export default {
"key": "value"
}
您可以按照
的预期访问它map["key"] // gives you "value"