3 回答
TA贡献1846条经验 获得超7个赞
问题
您使用fs.readFile不正确。 fs.readFile将返回undefined,因为readFile是异步的。文件的内容实际上是在data您提供的回调参数中到达的。
修理
完全删除let todos =并调用fs.readFile(因为您不需要 的返回值fs.readFile)。
然后调用JSON.parse(data)而不是JSON.parse(todos)(因为那是文件内容到达的地方)。
前
router.get('/todos', (req,res) =>{
let todos = fs.readFile('todos.json', 'utf8',(err, data) =>{
if (err) throw err
res.send(JSON.parse(todos))
})
})
后
router.get('/todos', (req,res) =>{
fs.readFile('todos.json', 'utf8',(err, data) =>{
if (err) throw err
res.send(JSON.parse(data))
})
})
TA贡献1853条经验 获得超18个赞
您尚未todos在应用程序中定义,它未定义,因此您收到错误消息,
正如@Sebastian Kaczmarek 所纠正的那样,todos返回值是fs.readFile. 作为fs.readFile回报"undefined",你会得到错误。
使用datawhich 是脚本中包含required文件内容的参数的名称。
router.get('/todos', (req, res) => {
fs.readFile('todos.json', 'utf8', (err, data) => {
if (err) throw err
res.send(JSON.parse(data));
})
})
添加回答
举报