Vm2: معالجة الخطأ في رد الاتصال غير المتزامن

تم إنشاؤها على ٣ فبراير ٢٠١٧  ·  8تعليقات  ·  مصدر: patriksimek/vm2

هل هناك أي طريقة للتعامل مع الخطأ في رد الاتصال غير المتزامن؟

const {NodeVM} = require('vm2');

const vm = new NodeVM({
    timeout: 10000,
    sandbox: {}
});

try {
  vm.run(`
    setInterval(() => {
      console.log("haha")
      process.exit()              // <--- can't find a way to intercept this!
    }, 1000);

    process.exit()
  `, 'code.js');
} catch(e) {
  console.log(e.message);
}


setInterval(() => {
  console.log("haha 2")
},1000);

أنا أبحث عن طريقة لمنع تعطل البرنامج النصي بالكامل.

feature request stale

التعليق الأكثر فائدة

أقوم بلف vm.run () بـ domain.run () ويبدو أنه يعمل. لا أعرف ما إذا كان له أي آثار جانبية ..

let domain = Domain.create();
domain.on('error', (err) => {
    console.error('Asynchronous error while executing script.', err.stack);
});
domain.run(() => {
    try {
        vm.run(script, filename);
    } catch (err) {
        console.error('Synchronous error while executing script.', err.stack);
    }
});

ال 8 كومينتر

يمكنك التعامل مع أخطاء غير متزامنة مثل هذا:

process.on('uncaughtException', (err) => {
    console.log(err);
})

ضع في اعتبارك أن هذا يمسك جميع الاستثناءات من داخل وخارج الجهاز الظاهري.

شكرا. نعم ، لقد ساعدني جزئيًا. راجع للشغل ، هل هناك أي طريقة لتمييز ما إذا كان الخطأ في "uncaughtException" مرتبطًا بـ VM (وربما أي منها) أم لا؟

لسوء الحظ ليس في الوقت الحالي. لدي فكرة عن كيفية تنفيذ ذلك ولكن الأمر سيستغرق بعض الوقت.

أقوم بلف vm.run () بـ domain.run () ويبدو أنه يعمل. لا أعرف ما إذا كان له أي آثار جانبية ..

let domain = Domain.create();
domain.on('error', (err) => {
    console.error('Asynchronous error while executing script.', err.stack);
});
domain.run(() => {
    try {
        vm.run(script, filename);
    } catch (err) {
        console.error('Synchronous error while executing script.', err.stack);
    }
});

تم وضع علامة على هذه المشكلة تلقائيًا على أنها قديمة نظرًا لعدم وجود نشاط حديث لها. سيتم إغلاقه إذا لم يحدث أي نشاط آخر. شكرا لمساهماتكم.

alsterg يبدو أن الطريقة تفقد فعاليتها ..

patriksimek هل يمكن أن تخبرني إذا نسيت هذا؟

بتأكيدImSingee ، الطريقة للأسف لم تعد تعمل.
هل هناك أي تحديث حول كيفية معالجة الأخطاء غير المتزامنة؟

أي تحديثات على هذا ؟؟؟

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات

القضايا ذات الصلة

KonradLinkowski picture KonradLinkowski  ·  10تعليقات

somebody1234 picture somebody1234  ·  4تعليقات

ghost picture ghost  ·  23تعليقات

XmiliaH picture XmiliaH  ·  19تعليقات

patriksimek picture patriksimek  ·  15تعليقات