首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >导入json文件时出现Typescript编译器错误

导入json文件时出现Typescript编译器错误
EN

Stack Overflow用户
提问于 2015-10-05 22:24:28
回答 4查看 68K关注 0票数 64

所以代码很简单:

calls.json

代码语言:javascript
复制
{"SERVER":{
    "requests":{
      "one":"1"
    }
} }

file.ts

代码语言:javascript
复制
import json = require('../static/calls.json');
console.log(json.SERVER);

生成的javascript是正确的,并且在运行节点js服务器时,控制台日志json.SERVER会打印'{ requests:{ one:'1‘} }’‘。

然而,typescript编译器(commonjs)不太喜欢这种情况,并抛出:“找不到模块'../static/calls.json'”。

当然,我尝试过编写一个.d.ts文件,如下所示:

代码语言:javascript
复制
declare module '../static/calls.json'{
    var exp:any;
    export = exp;
}

这显然会抛出:“环境模块声明不能指定相对模块名称”。

我还尝试了不同的变体,比如:

代码语言:javascript
复制
declare module 'calls.json' {
    import * as json from '/private/static/calls.json';
    export = json;
}

然后要求:

代码语言:javascript
复制
import json = require('calls.json');

没有一个能正常工作,并且有自己的小编译器错误:)

我想使用外部.json文件,因为我使用commonjs serverside和amd clientside端,并且我想要一个单独的文件来加载常量。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2015-10-05 23:18:47

使用var而不是import

代码语言:javascript
复制
var json = require('./calls.json');

您加载的是JSON文件,而不是模块,所以在这种情况下不应该使用import。当使用var时,require()将再次被视为正常函数。

如果您使用的是Node.js定义,那么一切都应该正常工作,否则将需要定义require

票数 96
EN

Stack Overflow用户

发布于 2018-06-06 04:49:30

TS 2.9 added support for well typed json imports。只需添加:

代码语言:javascript
复制
{
  "compilerOptions": {
    "resolveJsonModule": true
  }
}

在您的tsconfig.jsonjsconfig.json中。现在导入如下内容:

代码语言:javascript
复制
import json = require('../static/calls.json');

代码语言:javascript
复制
import * as json from '../static/calls.json';

应该解决,并有适当的类型也!

票数 34
EN

Stack Overflow用户

发布于 2017-05-12 18:29:43

另一种解决方案是将data.json更改为data.ts并像这样导出

代码语言:javascript
复制
export default {
  "key" : {
    ...
  }
}

并按照您的预期导入:

代码语言:javascript
复制
import { default as data } from './data'
票数 32
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32950966

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档