所以代码很简单:
calls.json
{"SERVER":{
"requests":{
"one":"1"
}
} }
file.ts
import json = require('../static/calls.json');
console.log(json.SERVER);
生成的javascript是正确的,并且在运行节点js服务器时,控制台日志json.SERVER会打印'{ requests:{ one:'1‘} }’‘。
然而,typescript编译器(commonjs)不太喜欢这种情况,并抛出:“找不到模块'../static/calls.json'”。
当然,我尝试过编写一个.d.ts文件,如下所示:
declare module '../static/calls.json'{
var exp:any;
export = exp;
}
这显然会抛出:“环境模块声明不能指定相对模块名称”。
我还尝试了不同的变体,比如:
declare module 'calls.json' {
import * as json from '/private/static/calls.json';
export = json;
}
然后要求:
import json = require('calls.json');
没有一个能正常工作,并且有自己的小编译器错误:)
我想使用外部.json文件,因为我使用commonjs serverside和amd clientside端,并且我想要一个单独的文件来加载常量。
发布于 2015-10-05 23:18:47
使用var
而不是import
。
var json = require('./calls.json');
您加载的是JSON文件,而不是模块,所以在这种情况下不应该使用import
。当使用var
时,require()
将再次被视为正常函数。
如果您使用的是Node.js定义,那么一切都应该正常工作,否则将需要定义require
。
发布于 2018-06-06 04:49:30
TS 2.9 added support for well typed json imports。只需添加:
{
"compilerOptions": {
"resolveJsonModule": true
}
}
在您的tsconfig.json
或jsconfig.json
中。现在导入如下内容:
import json = require('../static/calls.json');
和
import * as json from '../static/calls.json';
应该解决,并有适当的类型也!
发布于 2017-05-12 18:29:43
另一种解决方案是将data.json
更改为data.ts
并像这样导出
export default {
"key" : {
...
}
}
并按照您的预期导入:
import { default as data } from './data'
https://stackoverflow.com/questions/32950966
复制相似问题