如何在Node.js应用中动态导入数据?

时间:2018-11-16 18:47:33

标签: node.js json typescript express ejs

我想在带有typescript的节点/快速应用中使用require来导入json。我这样尝试过:

const url = `./data/${resource}.json`;
const data = require(url);

但是出现错误Cannot find module './data/my-data.json'

我想使用require而不是import来根据资源变量的值动态创建数据变量。

3 个答案:

答案 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);