- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
脚本一直运行,直到它尝试关闭数据库连接,现在它给了我一个 promise 错误。
当我注释掉此部分时,脚本运行良好,没有错误,但是当然,数据库连接永远不会关闭...
> // .then(() => {
> // database.close();
> // }, err => {
> // return database.close().then(() => {throw err; });
> // })
在 Promise 链的末尾有一个 catch block 还不够吗?
我收到以下错误:
[ERROR] (node:9376) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). (rejection id: 1) [[09:33:03.101]] [ERROR] (node:9376) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.
mysql.js
const mysql = require("mysql");
const mySQLConnectionDetails = {
host: "localhost",
user: "xxxx",
password: "xxxx",
database: "amdm",
multipleStatements: true
};
class Database {
constructor(config) {
this.connection = mysql.createConnection(config);
}
query(sql, args) {
return new Promise((resolve, reject) => {
this.connection.query(sql, args, (err, rows) => {
if (err)
return reject(err);
resolve(rows);
});
});
}
close() {
return new Promise((resolve, reject) => {
this.connection.end(err => {
if (err)
return reject(err);
resolve();
});
});
}
}
module.exports = { Database, mySQLConnectionDetails };
index.js
require("console-stamp")(console, "[HH:MM:ss.l]");
const express = require("express");
const router = express.Router();
const { Database, mySQLConnectionDetails} = require("../helpers/mySQL");
const { cleanseString, cleanseStringToArray, generateCountDuplication, sortValuesBykey, generateScoreArray, calculateAverage, replaceAbbreviationWithExpansion } = require("../helpers/stringFixers");
const database = new Database(mySQLConnectionDetails);
/* GET Clean original name of part and store it in database. */
router.get("/createcleanname", (req, res) => {
let allParts = [];
let eClassCodes = []; // here I define eClassCodes
let abbreviationsAndExpansions = [];
database.query("SELECT * FROM partnumbersclassified")
.then(rows => {
console.log(rows.length);
allParts = rows;
return database.query("SELECT * FROM amdm.abbreviationexpansion");
})
.then(rows => {
abbreviationsAndExpansions = rows;
return database.query("SELECT * FROM eclasstree WHERE numberofdigits = '8'");
})
.then(rows => {
eClassCodes = rows; // Here I assign the values to the variable.
const replaceAbbreviations = replaceAbbreviationWithExpansion(allParts, abbreviationsAndExpansions);
console.log("replaceAbbreviations finished");
const cleanseStrings = cleanseString(replaceAbbreviations, "cleanname");
console.log("cleanseStrings finished");
return cleanseStrings;
})
.then(result => {
result.forEach(obj => {
return database.query(`UPDATE partnumbersclassified SET cleanname = '${obj.cleanname}' WHERE itemnumber = '${obj.itemnumber}'`);
});
console.log("cleanname updated on all parts");
})
.then(() => {
database.close();
}, err => {
return database.close().then(() => {throw err; });
})
.catch(err => {throw err;});
});
最佳答案
而不是在 catch 中抛出错误,执行其预期目的:处理错误。
就您的情况而言,您可能只想记录错误。
.then(() => {
database.close();
}, err => {
return database.close().then(() => {throw err; });
})
.catch(err => {
console.log(err)
})
在生产环境中,您可能需要使用错误跟踪器,例如 Sentry记录并处理错误。
关于javascript - 为什么我收到 UnhandledPromiseRejectionWarning : Unhandled promise rejection?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55531077/
我一直在努力理解下面两个的区别,哪个是空闲的使用方式: let getClient = () => { return connect() .then((client) => {
我正在学习一门关于 JavaScript 函数式编程的很棒的在线类(class)。在讲师使用 Array.prototype.reject() 并且它在运行时对我不起作用之前,我一直很好。 我想使用“
这个问题在这里已经有了答案: Do I need to return after early resolve/reject? (6 个答案) 关闭 6 年前。 我是 Promise 的新手,我想知道
我对 Angular JS deferred 和 $q 感到困惑。我找到了这个 SO Question这解释了 $q.defer() 和 $q 之间的区别。它解释了 $q.reject is a sh
我正在尝试处理 Angular $q 服务及其相关对象和 API。当我查看控制台中的对象时,我看到: var deferred = $q.defer() ...(and then from conso
我在运行测试时遇到问题(在 Node 中), 我正在模拟一个被拒绝的 promise ,我的代码应该重试(使用 promise-retry 如果可能相关的话)。 当我使用 stub.returns(P
当我编译或运行它时,程序会显示正确的信息。问题是当我检查程序时。它显示“:(拒绝”“分钟检查我的时等待输入被拒绝时超时”程序。我也尝试使用 GetInt 和 get_int 。你能帮助我吗,请? in
对于 Ruby 中的 Hash,reject! 和 reject 与 delete_if 有何不同?谁能用简单的代码片段解释它们之间的区别? 最佳答案 由于其他答案指的是 Array#delete_i
当我尝试使用 Firestore 获取数据时,出现上述错误 - 我正在尝试从数据库检索 token ,以便可以发送消息: exports.getUsers = functions.https.onRe
这个问题在这里已经有了答案: Are JavaScript forever-pending promises bad? (2 个答案) 关闭 4 年前。 问题是这样的 function demo()
您好,我正在尝试调用返回 promise 的异步函数 makeRemoteExecutableSchema。 async function run() { const schema = await
我发出的每个 http 请求似乎都会出现此错误。我不太确定它来自哪里? (node:39390) UnhandledPromiseRejectionWarning:未处理的 promise 拒绝(拒绝
我的代码运行良好,但今天运行时发生了这种情况: (node:8592) UnhandledPromiseRejectionWarning: Unhandled promise rejection (r
我正在尝试从 mlabs 连接 mongodb。我插入了以下代码: Mongoose.connect('mongodb://:@ds163402.mlab.com:63402/projecttwist
我已将 Cucumber 与 nightwatch.js 集成。 我的 package.json 看起来像:- { "name": "learning-nightwatch", "versio
目前,我在“Javascript”代码中遇到了 promise 问题。它不断抛出“TypeError: res.status(...).json(...).catch is not a functio
首先,请看这个demo。 function loadImageAsync(url) { return new Promise(function(resolve, reject) { var
我已经在这个问题上工作了很长时间,但我无法真正解决它。当我执行 ionic Cordova build android 时,它运行良好,直到它到达 Cordova build android,任何人都
不知道是什么导致了这个问题。昨天它运行良好。今天,当我尝试运行 react-native run-android 时。我收到这个错误。有任何想法吗? Starting JS server... Run
我是第一次使用.then,而不是.then我使用回调函数。 下面是我的代码片段: phantom.create().then(function (ph) { ph.createPage().t
我是一名优秀的程序员,十分优秀!