Как динамически импортировать данные в приложение nodejs? - PullRequest
0 голосов
/ 16 ноября 2018

Я хотел бы использовать require в приложении node / express с машинописью для импорта json.Я попробовал это так:

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

, но я получаю ошибку Cannot find module './data/my-data.json'.

Я хотел бы использовать require вместо импорта, чтобы динамически создавать переменную данных в зависимости отна значение переменной ресурса.

Ответы [ 3 ]

0 голосов
/ 17 ноября 2018
cost path = require('path');
const url = path.resolve(__dirname, `./data/${resource}.json`);   
const data = require(url);
0 голосов
/ 17 ноября 2018

import fs from 'fs';

const file = fs.readFileSync(`./data/${resource}.json`).toString();
const data = JSON.parse(file);
0 голосов
/ 16 ноября 2018

Ключевое слово require - это специальное ключевое слово в nodejs. Он используется для загрузки модулей, и поскольку ваш json-файл не является модулем, отсюда и ошибка. Попробуйте, таким образом, вы можете динамически загрузить свой JSON.

import fs from 'fs';
const file = fs.readFileSync(`./data/${resource}.json`).toString();
const data = JSON.parse(file);

Возможно, есть лучшие способы написания этой функции, режим чтения о модуле fs здесь.


Редактировать: Как уже указывал кто-то, фактически возможно динамически require файл json. Вот как,

import path from 'path';
const uri = path.resolve(__dirname, `<path_to_json_file>`);   
const data = require(uri);

Однако, как стандартная практика, используйте модуль fs для загрузки статических ресурсов в ваш проект.

...