Node.js의 Promise에서 처리되지 않은 거부 소스를 찾으려고합니다.
--async-stack-traces
옵션을 사용하여 노드 버전 12로 업그레이드 하고 다음을 사용하여 청취했습니다.
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 실행
답변
유용한 스택 추적을 놓치면 다음과 같이 처리기에서 오류를 다시 발생시켜 노드를 새로 만들 수 있습니다.
process.on('unhandledRejection', (reason, p) => { throw reason });
이렇게하면 범인을 추적 할 수 있어야합니다.
답변
모든 제안에 감사드립니다. 최신 노드로 업그레이드하여 다시 한 번 시도했으며 12.14.1
마침내 스택 추적을 표시 할 수있었습니다.
나는 다음 node --async-stack-traces myScript.js
과 함께 사용 했다 :
process.on('unhandledRejection', (reason, p) => {
console.log(reason);
});
그리고 오류를 추적했습니다.