我真的变得疯狂,因为我无法找到解决方案。 我想要归档的是将带有配置的JSON文件导入到我的TypeScript文件中。 我了解到我需要一份申报文件。所以我在我的项目中添加了一个json-loader.d.ts文件。我也尝试过几个级别(root,typings文件夹,custom_typings文件夹),因为这是我找到的解决方案。 文件内容如下所示:
declare module "json!*" {
let json: any;
export = json;
}
declare module "*.json" {
const value: any;
export default value;
}

但是编译器仍然告诉我,导入JSON文件是不可能的,因为它不是一个模块。 那么,编译器如何知道,有这样的声明文件?
我已经尝试像这样修改我的tsconfig.json:
{
"compilerOptions": {
"target": "es6",
"module": "commonjs",
"outDir": "dist",
"typeRoots": [
"./node_modules/@types",
"./typings"
]
},
"include": [
"src/**/*.ts"
],
"exclude": [
"node_modules"
]
}
但它仍然无法奏效。有什么建议吗?
谢谢!
答案 0 :(得分:8)
使用declare module "*.json"
的Web上的示例,因为Webpack配置为加载JSON文件。
如果您不想打扰,可以使用var
代替import
:
var json = require('../config.json');
答案 1 :(得分:1)
我已成功使用以下内容将我的package.json
导入CLI程序中(因此我可以在帮助页面中重复使用版本,许可证和描述信息)。
declare module '*.json' {
const foo: {
name: string;
version: string;
author: string;
license: string;
description: string;
};
export = foo;
}
或者,您可以导入包含接口描述等的其他文件,但是您需要将导入文件放在模块声明中,例如
declare module 'ormconfig.json' {
import { Connection } from "typeorm";
const foo: Connection[];
export = foo;
}
答案 2 :(得分:0)
你有没有像在网页中添加一个SystemJS脚本来做模块加载 - index.html等。我使用了https://cdnjs.com/libraries/systemjs和iirc你需要https://cdnjs.cloudflare.com/ajax/libs/systemjs/0.20.14/system.src.js System.JS是模块加载器。必须先导入脚本。 然后你需要这样的东西:
<script
src="https://cdnjs.cloudflare.com/ajax/libs/systemjs/0.20.14/system.src.js "/>
<script>
System.config({
defaultJSExtension:true
});
System.import('pathtoscriptwithoutdotjsatend');
</script>