gpt4 book ai didi

javascript - 未处理的 promise 拒绝警告 : Unhandled promise rejection (rejection id: 22): ReferenceError: client is not defined

转载 作者:搜寻专家 更新时间:2023-10-31 23:58:56 26 4
gpt4 key购买 nike

我发出的每个 http 请求似乎都会出现此错误。我不太确定它来自哪里?

(node:39390) UnhandledPromiseRejectionWarning:未处理的 promise 拒绝(拒绝 id:22):ReferenceError:未定义客户端

错误中没有行号,但这里有一段代码示例似乎是导致错误的原因:

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();
}

起初我认为它一定来 self 的 finally block (也许 client 超出范围),但我添加了 if 语句以明确阻止尝试调用 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 的创建者,他在我收到可能是该库的问题的建议后在这里回答了我的问题(doesn ' 看起来像它)。我只需要在 try-catch

之外创建客户端
var client = await pool.connect()
try {
await client.query(...)
res.sendStatus(200)
} catch { ...}
finally {

}

他的完整答案可以在这里找到:https://github.com/brianc/node-postgres/issues/1301

关于javascript - 未处理的 promise 拒绝警告 : Unhandled promise rejection (rejection id: 22): ReferenceError: client is not defined,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44170941/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com