我有一个JSON如下所示的文件:
{
"primaryBright": "#2DC6FB",
"primaryMain": "#05B4F0",
"primaryDarker": "#04A1D7",
"primaryDarkest": "#048FBE",
"secondaryBright": "#4CD2C0",
"secondaryMain": "#00BFA5",
"secondaryDarker": "#009884",
"secondaryDarkest": "#007F6E",
"tertiaryMain": "#FA555A",
"tertiaryDarker": "#F93C42",
"tertiaryDarkest": "#F9232A",
"darkGrey": "#333333",
"lightGrey": "#777777"
}
Run Code Online (Sandbox Code Playgroud)
我正在尝试将其导入到.tsx文件中.为此,我将其添加到类型定义中:
declare module "*.json" {
const value: any;
export default value;
}
Run Code Online (Sandbox Code Playgroud)
而我正在这样导入它.
import colors = require('../colors.json')
该文件中,我使用的颜色primaryMain作为colors.primaryMain.但是我得到一个错误 - JSON
我究竟做错了什么?
所以代码很简单:
calls.json
{"SERVER":{
"requests":{
"one":"1"
}
} }
Run Code Online (Sandbox Code Playgroud)
file.ts
import json = require('../static/calls.json');
console.log(json.SERVER);
Run Code Online (Sandbox Code Playgroud)
生成的javascript是正确的,当运行节点js服务器时,控制台日志json.SERVER打印出'{requests:{one:'1'}}',就像它应该的那样.
但是,打字稿编译器(commonjs),不知何故并不特别喜欢这种情况并抛出:"找不到模块'../static/calls.json'".
当然我试着写一个.d.ts文件,像这样:
declare module '../static/calls.json'{
var exp:any;
export = exp;
}
Run Code Online (Sandbox Code Playgroud)
这显然会抛出:"Ambient模块声明不能指定相对模块名称".
我也尝试了不同的变体,例如:
declare module 'calls.json' {
import * as json from '/private/static/calls.json';
export = json;
}
Run Code Online (Sandbox Code Playgroud)
然后要求:
import json = require('calls.json');
Run Code Online (Sandbox Code Playgroud)
没有正常工作,并有自己的小编译器错误:)
我想使用外部.json文件,因为我使用commonjs serverside和amd clientside,我想要一个文件来加载常量.