我是 nodeJS 的新手,我想使用 express 向瀏覽器顯示我的請求結果正文,但是我的代碼拋出了這樣的錯誤,我嘗試使用 array.push() 但也不起作用
錯誤
node:_http_outgoing:576
throw new ERR_HTTP_HEADERS_SENT('set');
^
Error [ERR_HTTP_HEADERS_SENT]: Cannot set headers after they are sent to the client
at new NodeError (node:internal/errors:371:5)
at ServerResponse.setHeader (node:_http_outgoing:576:11)
at ServerResponse.header (C:\xampp\htdocs\#masgalih\tt\node_modules\express\lib\response.js:771:10)
at ServerResponse.send (C:\xampp\htdocs\#masgalih\tt\node_modules\express\lib\response.js:170:12)
at ServerResponse.json (C:\xampp\htdocs\#masgalih\tt\node_modules\express\lib\response.js:267:15)
at ServerResponse.send (C:\xampp\htdocs\#masgalih\tt\node_modules\express\lib\response.js:158:21)
at Request._callback (C:\xampp\htdocs\#masgalih\tt\index.js:12:24)
at Request.self.callback (C:\xampp\htdocs\#masgalih\tt\node_modules\request\request.js:185:22)
at Request.emit (node:events:390:28)
at Request.<anonymous> (C:\xampp\htdocs\#masgalih\tt\node_modules\request\request.js:1154:10) {
code: 'ERR_HTTP_HEADERS_SENT'
}
代碼
const request = require('request')
const express = require('express')
const app = express()
app.get('/getdata', (req, res) => {
if (req.query.id !== undefined && req.query.id !== '') {
request('http://localhost/myApi/index.php?id=' req.query.id, (err, response, body) => {
return res.send({
status: 200,
data: body
})
})
}
return res.send({
status: 400,
msg: 'Parameter invalid'
})
})
app.listen(2000)
uj5u.com熱心網友回復:
其中app.get('/getdata');有兩個不同res.send();的 。這本身沒問題,但發生的情況是,當函式app.get('/getdata');運行時,它if首先檢查該陳述句。如果if為假,它會跳過,一切正常。
但如果這個if陳述是真的呢?好吧,陳述句中的代碼運行并將 a 發送request到指定的 URL 并等待回應。在等待的同時,JavaScript 會繼續運行您的代碼,因為 JavaScript 是異步的。
所以第二個res.send()運行,但隨后request收到回應,因此發送第二個(按時間順序排列的第一個)res.send(),這就是為什么錯誤說您正在嘗試設定標頭(nodejs請求中的主要資訊)之后您剛剛將其發送給客戶。
代碼應該做的是只在一個或另一個上運行,而不是兩者都運行。我們可以通過將第二個res.send()放在 else 中來實作這一點,這意味著它只在if陳述句為假時運行。所以像這樣:
const request = require('request')
const express = require('express')
const app = express()
app.get('/getdata', (req, res) => {
if (req.query.id !== undefined && req.query.id !== '') {
request('http://localhost/myApi/index.php?id=' req.query.id, (err, response, body) => {
return res.send({
status: 200,
data: body
})
})
} else {
return res.send({
status: 400,
msg: 'Parameter invalid'
})
}
})
app.listen(2000)
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/367450.html
標籤:javascript 节点.js 数组
上一篇:如何Vuev-if等于或包含
