首发于 程序笔记
typescript中如何直接引入json文件

typescript中如何直接引入json文件

前言

这是以前的笔记, 通过例举问题的方式来寻求解决方法

这里记录一个奇怪的问题, 如代码图片

这是一个单独的文件, 只是引入一个 json 文件, 使用 typescript 编写, 发现 require 关键字出错

然而使用命令 tsc jsonTest-1.ts 却能构建出 js 文件, 然后也能够运行, 如构建出来的 jsonTest-1.js 内容如下

var serverConfig = require('../doJSON/serverConfig.json');
console.log(serverConfig);

同样也可以运行

这里主要能 tsc 构建的原因是我安装了包 @types/node , 如 package.json 文件内容如下

{
  "name": "jsontest",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "private": true,
  "dependencies": {},
  "devDependencies": {
    "@types/node": "^10.12.11"
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  "author": "",
  "license": "ISC"
}

然后运行 npm install 来安装依赖

之后就可以编译, 但问题就是会显示报错

这个问题一直没有解决, 然后我找到另一个方法来导入 json 文件

其解决方法就是, 在安装完 @types/node 模块之后, 在 node_modules/@type/node/ 文件夹下存在一个 index.d.ts 文件, 在 index.d.ts 文件的末尾添加如下代码

declare module "*.json" {
    const jsonValue: any;
    export default jsonValue;
}

然后就可以在此项目的 ts 文件中导入 json 文件了

如代码

import * as serverConfigJson from "./serverConfig.json";
console.log(serverConfigJson)

这样, 再使用命令 tsc jsonTest.ts 来构建成 js 文件, 之后就可以运行了


update-1

发现现在引入 json 文件不需要像上面那样去做, 只需要在 tsconfig.json 中增加一个编译选项就好了 如增加

"resolveJsonModule": true,

即可

现在我使用的完整的 tsconfig.json 内容如下

{
  "compileOnSave": true,
  "compilerOptions": {
    "module": "commonjs",
    "target": "es5",
    "sourceMap": false,
    "watch": false,
    "newLine": "crlf",
    "resolveJsonModule": true,
    "typeRoots": [
      "node_modules/@types"