当我的 node 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 readJSON:“路径”参数必须是字符串类型或 Buffer 或 URL 的实例。收到一个对象实例
而如果我将字符串路径直接放入 readJson ,如下所示:
const emojis = await fs.readJson("../../jsons/emojis.json")
我收到一个错误:
错误 fs readJSON: ENOENT: 没有这样的文件或目录,打开 './emojis.json'
编辑:文件路径是绝对正确的,就像我提到的我使用 VSCode。
emojis.json json 文件位于“jsons”文件夹下,该文件夹距离控制器文件 2 个文件夹。