Vm2: рдПрд╕рд┐рдВрдХреНрд╕ рдХреЙрд▓рдмреИрдХ рдореЗрдВ рд╣реИрдВрдбрд▓ рдПрд░рд░

рдХреЛ рдирд┐рд░реНрдорд┐рдд 3 рдлрд╝рд░ре░ 2017  ┬╖  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

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рдореИрдВ рдбреЛрдореЗрди.run() рдХреЗ рд╕рд╛рде vm.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);
})

рдзреНрдпрд╛рди рд░рдЦреЗрдВ рдХрд┐ рдпрд╣ VM рдХреЗ рдЕрдВрджрд░ рдФрд░ рдмрд╛рд╣рд░ рд╕рднреА рдЕрдкрд╡рд╛рджреЛрдВ рдХреЛ рдкрдХрдбрд╝рддрд╛ рд╣реИред

рдзрдиреНрдпрд╡рд╛рджред рд╣рд╛рдВ, рдЗрд╕рдиреЗ рдЖрдВрд╢рд┐рдХ рд░реВрдк рд╕реЗ рдореЗрд░реА рдорджрдж рдХреАред рдмреАрдЯреАрдбрдмреНрд▓реВ, рдХреНрдпрд╛ 'рдЕрдирдХреЙрдЯреЗрдб рдПрдХреНрд╕реЗрдкреНрд╢рди' рдореЗрдВ рддреНрд░реБрдЯрд┐ рдПрдХ рд╡реАрдПрдо (рдФрд░ рд╕рдВрднрд╡рддрдГ, рдЙрдирдореЗрдВ рд╕реЗ рдХреМрди рд╕рд╛) рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИ рдпрд╛ рдирд╣реАрдВ, рдпрд╣ рднреЗрдж рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рд╣реИ?

рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ рдлрд┐рд▓рд╣рд╛рд▓ рдирд╣реАрдВред рдореБрдЭреЗ рдПрдХ рд╡рд┐рдЪрд╛рд░ рд╣реИ рдХрд┐ рдЗрд╕реЗ рдХреИрд╕реЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдП рд▓реЗрдХрд┐рди рдЗрд╕рдореЗрдВ рдХреБрдЫ рд╕рдордп рд▓рдЧреЗрдЧрд╛ред

рдореИрдВ рдбреЛрдореЗрди.run() рдХреЗ рд╕рд╛рде vm.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 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

ghost picture ghost  ┬╖  23рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

KonradLinkowski picture KonradLinkowski  ┬╖  10рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

wintertime-inc picture wintertime-inc  ┬╖  5рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

patriksimek picture patriksimek  ┬╖  5рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

seanc picture seanc  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ