Когда у меня была очень простая файловая структура без маршрутизаторов и контроллеров в моем проекте express, я мог легко читать и правильно возвращать содержимое файла json, используя fs-extra
.
Но когда я добавил несколько папок в папки (и изучил маршрутизаторы + контроллеры), у меня возникли трудности.
Если я делаю это, имея переменную require
(я использую автозаполнение VSCode, чтобы сделать уверен, что мой путь к файлу указан правильно):
const fs = require("fs-extra")
const json = require("../../jsons/emojis.json")
exports.getEmojis = async (req, res) => {
try {
const emojis = await fs.readJson(json)
const pretty = JSON.stringify(emojis, null, 4)
res.setHeader("Content-Type", "application/json")
res.send(pretty)
} catch (err) {
console.log("Error fs readJSON: " + err.message)
res.status(500).send({
message: "Error getting emojis."
})
}
}
Я получаю сообщение об ошибке:
Ошибка чтения fs JSON: Аргумент «путь» должен иметь тип string или экземпляр буфера или URL. Получил экземпляр объекта
В то время как если я положу путь к строке, чтобы прочитать Json, например, так:
const emojis = await fs.readJson("../../jsons/emojis.json")
Я получу ошибку:
Ошибка чтения файла JSON: ENOENT: нет такого файла или каталога, откройте './emojis.json'
Редактировать: путь к файлу абсолютно правильно, как я уже говорил, я использую VSCode.
emojis. json json файл находится в папке "jsons", и эта папка находится в 2 папках от файла контроллера.