UnhandledPromiseRejectionWarning:未处理的承诺拒绝(拒绝ID:22):ReferenceError:客户端未定义
问题描述:
此错误似乎在每个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;
答
所有信用这里去brianc
的node-postgres
谁我收到的建议之后,这可能是与该库的问题在这里回答我的问题的创造者(似乎不是这样)。我只是需要创建try-catch
var client = await pool.connect()
try {
await client.query(...)
res.sendStatus(200)
} catch { ...}
finally {
}
他完整的答案以外的客户可以在这里找到:https://github.com/brianc/node-postgres/issues/1301
是否有异常没有行号? – Bergi
该代码看起来不错。这是确切的,整个代码?你是否在其他地方使用过“客户端”(grep)? – Bergi
@Bergi更正,没有行号。我更新了完整的路线(我简化了查询,因为它不是焦点)。来自这里的任何线索? –