我已经尝试了网上找到的每种解决方案,但似乎我无法解决我的具体问题。
我正在尝试将一个静态.json文件导入到一个节点控制器中,所有这些都是在TypeScript中完成的。
我得到的错误是
找不到模块'./data.map.json‘
我已经检查了这条路径100次,绝对是正确的。我已经尝试了要求和导入的每一个组合,以及我在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
}
发布于 2018-01-21 01:59:22
修复了这个问题,之前忘记在这里发布答案了。我没有尝试导入json文件,而是直接从typescript文件中导出了一个json对象,效果非常好。
将导入行更改为
import {default as map} from "./data.map";
文件data.map.ts
是
export default {
"key": "value"
}
您可以访问它,就像您期望的那样
map["key"] // gives you "value"
发布于 2018-06-06 04:46:01
从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";
https://stackoverflow.com/questions/47582860
复制相似问题