我想在带有typescript的节点/快速应用中使用require来导入json。我这样尝试过:
const url = `./data/${resource}.json`;
const data = require(url);
但是出现错误Cannot find module './data/my-data.json'
。
我想使用require而不是import来根据资源变量的值动态创建数据变量。
答案 0 :(得分:1)
require关键字是nodejs中的特殊关键字。它用于加载模块,并且由于您的json文件不是模块,因此会出错。尝试这种方式,这样您就可以动态加载json。
import fs from 'fs';
const file = fs.readFileSync(`./data/${resource}.json`).toString();
const data = JSON.parse(file);
可能有更好的方法来编写此功能,有关fs模块here.的读取模式
编辑:正如某人已经指出的那样,实际上可以动态require
json文件。
import path from 'path';
const uri = path.resolve(__dirname, `<path_to_json_file>`);
const data = require(uri);
但是,作为标准做法,请使用fs
模块将静态资产加载到您的项目中。
答案 1 :(得分:0)
cost path = require('path');
const url = path.resolve(__dirname, `./data/${resource}.json`);
const data = require(url);
答案 2 :(得分:-1)
import fs from 'fs';
const file = fs.readFileSync(`./data/${resource}.json`).toString();
const data = JSON.parse(file);