1 回答

MYYA
TA貢獻(xiàn)1868條經(jīng)驗 獲得超4個贊
1.直接的bug就是1樓的同學(xué)說的
2.但是你在讀文件的時候沒用到流,所以我覺得你可以直接使用_this.res.end(data)
可以避免你的問題
3.從你的代碼中讀出來幾點意見給你
fs.exists(path, callback)
這個方法很早就已經(jīng)Deprecated了,所以也不推薦你使用,用fs.lstat() or fs.access()
代替吧!既然你想用write,那你讀文件的時候就可以用流去讀,這樣如果是一個超大的文件的話,你就可以流式讀取的方式讀出來,你現(xiàn)在readFile,然后直接write,最后end,還是一次性把文件內(nèi)容讀到內(nèi)存中,對于大文件來說還是體驗很差,推薦使用下面的代碼嘗試一下
const filePath=path.join(__dirname, 'xxxx.json') fs.lstat(filePath, (err, stats) => { if(err) return res.status(500).end('file is not founded') res.writeHead(200, { 'Content-Type' : 'application/json', }) const readStream = fs.createReadStream(filePath) readStream.on('end', () => { res.end() }) readStream.on('error', (error) => { res.end(`read file stream error ${error.message}`) }) readStream.pipe(res) })
隨手寫了一些, 你可以進(jìn)行優(yōu)化,打日志,或者用async解決callback hell問題等,還有頭類型,返回的錯誤信息等,不過核心的流式吐出的代碼應(yīng)該沒問題,僅供參考,希望對你有幫助
添加回答
舉報
0/150
提交
取消