所以代码很简单:
calls.json
{"SERVER":{
"requests":{
"one":"1"
}
} }
文件.ts
import json = require('../static/calls.json');
console.log(json.SERVER);
生成的 JavaScript 是正确的,在运行 Node.js 服务器时,控制台日志输出 JSON.SERVER 打印 '{ requests: { one: '1' } }',这正是应该的。
然而,TypeScript 编译器(CommonJS)似乎不太喜欢这种情况,并抛出了“Cannot find module '../static/calls.json'”的错误。
当然,我尝试写了一个 .d.ts 文件,像这样:
declare module '../static/calls.json'{
var exp:any;
export = exp;
}
那么显然会报错:"Ambient module declaration cannot specify relative module name"。
我还尝试了不同的变体,例如:
declare module 'calls.json' {
import * as json from '/private/static/calls.json';
export = json;
}
然后要求:
import json = require('calls.json');
没有一个能正常工作,并且它们都有自己的编译器错误 :)
我想要使用外部的.json文件,因为我在服务器端使用commonjs,在客户端使用amd,并且我想要一个单一的文件来加载常量。
require
。快速解决方案是使该文件不引用它们中的任何一个,只需使用declare var require: any;
。 - thoughtrepovar config = require('./config.json')
导入,但Typescript-Babel仍会显示相同的“无法找到模块.config.json”的错误消息。 - nunobaba