ฉันพยายามค้นหาแหล่งที่มาของการปฏิเสธที่ไม่มีการจัดการจาก Promise ใน Node.js
ฉันได้ลองอัพเกรดเป็น Node เวอร์ชัน 12 โดยใช้--async-stack-traces
ตัวเลือกและฟังโดยใช้:
process.on("unhandledRejection",( reason, promise ) => {
console.log(reason);
console.log(promise);
});
แต่ฉันก็ยังไม่เห็นร่องรอยสแต็คที่เป็นประโยชน์ใด ๆ ที่จะช่วยฉันหาผู้กระทำผิด!
UnhandledPromiseRejectionWarning: TypeError: Chaining cycle detected for promise #<Promise>
at process._tickCallback (internal/process/next_tick.js:68:7)
(node:89675) 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: 11)
รันโหนด v10.10.0
const cyclic = Promise.resolve().then(()=>cyclic);
ดังนั้นอย่าค้นหาการปฏิเสธสัญญาที่ไม่สามารถจัดการได้สิ่งนี้อยู่ในรหัสภายในของโหนด
npm i bluebird
และเพิ่มconst Promise = require('bluebird')
รหัสอาจทำให้คุณมีข้อผิดพลาดโดยละเอียดเพิ่มเติม
--trace-warnings
การปฏิเสธที่ไม่สามารถจัดการได้จะมีคำเตือนว่าคุณสามารถติดตามได้