অপরিবর্তিত প্রতিশ্রুতি প্রত্যাখানের উত্স সন্ধান: প্রকারের ত্রুটি: প্রতিশ্রুতির জন্য শৃঙ্খলাচক্র সনাক্ত করা হয়েছে


11

আমি নোড.জেএস-এর একটি প্রতিশ্রুতি থেকে অবিচ্ছিন্ন প্রত্যাখানের উত্স সন্ধান করার চেষ্টা করছি

আমি নোড সংস্করণ 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 চলছে


একাধিক প্রতিশ্রুতি আছে?
প্রভোজোত সিং কৈথ

4
আপনার কোডের ত্রুটিটি একটি চক্রাকার শৃঙ্খলাকৃতি, যেমনটি আপনার সাথে থাকে const cyclic = Promise.resolve().then(()=>cyclic);, সুতরাং কোনও অপরিবর্তিত প্রতিশ্রুতি প্রত্যাখ্যান অনুসন্ধান করবেন না, এটি নোডের অভ্যন্তরীণ কোডে রয়েছে।
কাইদো

1
কিছু উত্থাপনকারী কোডটি সহায়ক হবে।
x00

কোডটি চালানো npm i bluebirdএবং যুক্ত const Promise = require('bluebird')করা আপনাকে আরও বিশদ ত্রুটির বার্তা দিতে পারে
n3ko

এর সাথে নোড চালানোর চেষ্টা করুন --trace-warnings, অপরিশোধিত প্রত্যাখ্যানগুলির সাথে আপনি যে
সতর্কতাটি

উত্তর:


2

আপনি যদি কোনও সহায়ক স্ট্যাকট্রেস মিস করেন তবে আপনি হ্যান্ডলারে নিজের ত্রুটিটিকে এভাবে নিক্ষেপ করে নোডকে নতুন তৈরি করতে পারেন:

process.on('unhandledRejection', (reason, p) => { throw reason });

এইভাবে, আপনি অপরাধীকে সন্ধান করতে সক্ষম হবেন।


আমি কেবল আমার পক্ষ থেকে আবার চেষ্টা করি, এবং এটি অবশ্যই কার্যকর হয়।
গমনো

@ d -_- বি আপনি কি আপনার পক্ষে এটি পরীক্ষা করতে পেরেছেন?
গমনো

হাই @ গমিনো, হ্যাঁ দুর্ভাগ্যক্রমে এটি আমার দৃশ্যে কাজ করেনি তবে আমি এখানে আপনার সহায়তার প্রশংসা করি!
d -_- বি ১

0

সমস্ত পরামর্শ জন্য ধন্যবাদ. সর্বশেষ নোডে আপগ্রেড করে আমি আরও একবার চেষ্টা করেছি 12.14.1এবং শেষ পর্যন্ত স্ট্যাকের ট্রেসটি প্রদর্শন করতে সক্ষম হয়েছি:

আমি node --async-stack-traces myScript.jsএর সাথে একত্রে ব্যবহৃত :

process.on('unhandledRejection', (reason, p) => {
  console.log(reason);
});

এবং এটি ত্রুটিটি সন্ধান করে।


নোড 12 কি ইভেন্ট হ্যান্ডলার ছাড়াই আনহ্যান্ডেল প্রত্যাখ্যান কারণে লগ করে না?
বার্গি

আমি যে সমাধানটি দিয়েছি তা কি আপনি চেষ্টা করে দেখেননি?
গমনো

-1

এই কোডটির জন্য কিছু ভাল স্ট্যাকের সন্ধানের জন্য const cyclic = Promise.resolve().then(() => cyclic); আমি এই কোডটি ফাইলে রেখেছি prromise_cycle.jsএবং এটির ডিবাগ করার জন্য পরিদর্শকের সাথে চালিত।

আমি এটি Pause on caught exceptionsসক্ষম করে ফ্ল্যাগ সক্ষম করে ক্রোম ডেভটুলগুলিতে ডিবাগ করেছি এবং তারপরে আমি আমার ফাইলটির সাথে পুরো স্ট্যাক ট্রেস দেখতে পাচ্ছি

এখানে চিত্র বর্ণনা লিখুন

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.