此錯誤似乎在每個http
請求中都會出現。我不完全確定它來自哪裏?UnhandledPromiseRejectionWarning:未處理的承諾拒絕(拒絕ID:22):ReferenceError:客戶端未定義
(node:39390) UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 22): ReferenceError: client is not defined
有錯誤沒有行號,但這裏是的,這似乎代碼的樣本是造成它:
try {
var client = await pool.connect();
await client.query(queryStatement, queryArgumentsArray);
res.sendStatus(200);
} catch (e) {
console.log('Error adding updating subvendor availability data, UPDATE SQL query task', err);
res.sendStatus(500);
} finally {
client && client.release && client.release();
}
它首先我認爲這必須從我終於現身塊(也許client
是超出範圍),但我說,如果聲明明確阻止試圖調用client.release
,如果它不存在:
if (client) { client && client.release && client.release() };
我仍然得到這個錯誤,所以我覺得它一定是來自這些線。
var client = await pool.connect();
await client.query(queryStatement, queryArgumentsArray);
res.sendStatus(200);
我誤解了如何使用異步嗎?要清楚,代碼運行良好,http
請求正在工作(正確響應請求),我的終端正在充斥着這些警告。
這裏是整個路線的簡化版本:
var express = require('express');
var router = express.Router();
var pool = require('../modules/pg-pool'); // brings in pg-pool created in another module
// This route updates the availability for a user
router.put('/updateAvailability', async (req, res) => {
var userId = req.decodedToken.userSQLId;
var subvendorId = req.headers.subvendor_id;
var availability = req.body;
var queryStatement = 'UPDATE status SET status=$3 WHERE userId=$2';
var queryArgumentsArray = [availability.status, userId ];
try {
var client = await pool.connect();
await client.query(queryStatement, queryArgumentsArray);
res.sendStatus(200);
} catch (e) {
console.log('Error updating subvendor availability data, UPDATE SQL query task', err);
res.sendStatus(500);
} finally {
client && client.release && client.release();
}
});
module.exports = router;
是否有異常沒有行號? – Bergi
該代碼看起來不錯。這是確切的,整個代碼?你是否在其他地方使用過「客戶端」(grep)? – Bergi
@Bergi更正,沒有行號。我更新了完整的路線(我簡化了查詢,因爲它不是焦點)。來自這裏的任何線索? –