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));
})
})
添加回答
舉報