src: fix deferred events not working with -e
Defer evaluation of the script for a tick. This is a workaround for events not firing when evaluating scripts on the command line with -e. Fixes: https://github.com/nodejs/io.js/issues/1600 PR-URL: https://github.com/nodejs/io.js/pull/1793 Reviewed-By: Trevor Norris <trev.norris@gmail.com>
This commit is contained in:
parent
eb1856dfd1
commit
93a44d5228
@ -558,8 +558,13 @@
|
|||||||
'return require("vm").runInThisContext(' +
|
'return require("vm").runInThisContext(' +
|
||||||
JSON.stringify(body) + ', { filename: ' +
|
JSON.stringify(body) + ', { filename: ' +
|
||||||
JSON.stringify(name) + ' });\n';
|
JSON.stringify(name) + ' });\n';
|
||||||
var result = module._compile(script, name + '-wrapper');
|
// Defer evaluation for a tick. This is a workaround for deferred
|
||||||
if (process._print_eval) console.log(result);
|
// events not firing when evaluating scripts from the command line,
|
||||||
|
// see https://github.com/nodejs/io.js/issues/1600.
|
||||||
|
process.nextTick(function() {
|
||||||
|
var result = module._compile(script, name + '-wrapper');
|
||||||
|
if (process._print_eval) console.log(result);
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
function createWritableStdioStream(fd) {
|
function createWritableStdioStream(fd) {
|
||||||
|
@ -6,9 +6,9 @@ SyntaxError: Strict mode code may not include a with statement
|
|||||||
at Object.exports.runInThisContext (vm.js:*)
|
at Object.exports.runInThisContext (vm.js:*)
|
||||||
at Object.<anonymous> ([eval]-wrapper:*:*)
|
at Object.<anonymous> ([eval]-wrapper:*:*)
|
||||||
at Module._compile (module.js:*:*)
|
at Module._compile (module.js:*:*)
|
||||||
at evalScript (node.js:*:*)
|
|
||||||
at startup (node.js:*:*)
|
|
||||||
at node.js:*:*
|
at node.js:*:*
|
||||||
|
at doNTCallback0 (node.js:*:*)
|
||||||
|
at process._tickCallback (node.js:*:*)
|
||||||
42
|
42
|
||||||
42
|
42
|
||||||
[eval]:1
|
[eval]:1
|
||||||
@ -19,9 +19,9 @@ Error: hello
|
|||||||
at Object.exports.runInThisContext (vm.js:*)
|
at Object.exports.runInThisContext (vm.js:*)
|
||||||
at Object.<anonymous> ([eval]-wrapper:*:*)
|
at Object.<anonymous> ([eval]-wrapper:*:*)
|
||||||
at Module._compile (module.js:*:*)
|
at Module._compile (module.js:*:*)
|
||||||
at evalScript (node.js:*:*)
|
|
||||||
at startup (node.js:*:*)
|
|
||||||
at node.js:*:*
|
at node.js:*:*
|
||||||
|
at doNTCallback0 (node.js:*:*)
|
||||||
|
at process._tickCallback (node.js:*:*)
|
||||||
[eval]:1
|
[eval]:1
|
||||||
throw new Error("hello")
|
throw new Error("hello")
|
||||||
^
|
^
|
||||||
@ -30,9 +30,9 @@ Error: hello
|
|||||||
at Object.exports.runInThisContext (vm.js:*)
|
at Object.exports.runInThisContext (vm.js:*)
|
||||||
at Object.<anonymous> ([eval]-wrapper:*:*)
|
at Object.<anonymous> ([eval]-wrapper:*:*)
|
||||||
at Module._compile (module.js:*:*)
|
at Module._compile (module.js:*:*)
|
||||||
at evalScript (node.js:*:*)
|
|
||||||
at startup (node.js:*:*)
|
|
||||||
at node.js:*:*
|
at node.js:*:*
|
||||||
|
at doNTCallback0 (node.js:*:*)
|
||||||
|
at process._tickCallback (node.js:*:*)
|
||||||
100
|
100
|
||||||
[eval]:1
|
[eval]:1
|
||||||
var x = 100; y = x;
|
var x = 100; y = x;
|
||||||
@ -42,9 +42,9 @@ ReferenceError: y is not defined
|
|||||||
at Object.exports.runInThisContext (vm.js:*)
|
at Object.exports.runInThisContext (vm.js:*)
|
||||||
at Object.<anonymous> ([eval]-wrapper:*:*)
|
at Object.<anonymous> ([eval]-wrapper:*:*)
|
||||||
at Module._compile (module.js:*:*)
|
at Module._compile (module.js:*:*)
|
||||||
at evalScript (node.js:*:*)
|
|
||||||
at startup (node.js:*:*)
|
|
||||||
at node.js:*:*
|
at node.js:*:*
|
||||||
|
at doNTCallback0 (node.js:*:*)
|
||||||
|
at process._tickCallback (node.js:*:*)
|
||||||
[eval]:1
|
[eval]:1
|
||||||
var ______________________________________________; throw 10
|
var ______________________________________________; throw 10
|
||||||
^
|
^
|
||||||
|
@ -7,12 +7,8 @@ SyntaxError: Strict mode code may not include a with statement
|
|||||||
at Object.exports.runInThisContext (vm.js:*)
|
at Object.exports.runInThisContext (vm.js:*)
|
||||||
at Object.<anonymous> ([stdin]-wrapper:*:*)
|
at Object.<anonymous> ([stdin]-wrapper:*:*)
|
||||||
at Module._compile (module.js:*:*)
|
at Module._compile (module.js:*:*)
|
||||||
at evalScript (node.js:*:*)
|
at node.js:*:*
|
||||||
at Socket.<anonymous> (node.js:*:*)
|
at doNTCallback0 (node.js:*:*)
|
||||||
at emitNone (events.js:*:*)
|
|
||||||
at Socket.emit (events.js:*:*)
|
|
||||||
at endReadableNT (_stream_readable.js:*:*)
|
|
||||||
at doNTCallback2 (node.js:*:*)
|
|
||||||
at process._tickCallback (node.js:*:*)
|
at process._tickCallback (node.js:*:*)
|
||||||
42
|
42
|
||||||
42
|
42
|
||||||
@ -25,12 +21,9 @@ Error: hello
|
|||||||
at Object.exports.runInThisContext (vm.js:*)
|
at Object.exports.runInThisContext (vm.js:*)
|
||||||
at Object.<anonymous> ([stdin]-wrapper:*:*)
|
at Object.<anonymous> ([stdin]-wrapper:*:*)
|
||||||
at Module._compile (module.js:*:*)
|
at Module._compile (module.js:*:*)
|
||||||
at evalScript (node.js:*:*)
|
at node.js:*:*
|
||||||
at Socket.<anonymous> (node.js:*:*)
|
at doNTCallback0 (node.js:*:*)
|
||||||
at emitNone (events.js:*:*)
|
at process._tickCallback (node.js:*:*)
|
||||||
at Socket.emit (events.js:*:*)
|
|
||||||
at endReadableNT (_stream_readable.js:*:*)
|
|
||||||
at doNTCallback2 (node.js:*:*)
|
|
||||||
|
|
||||||
[stdin]:1
|
[stdin]:1
|
||||||
throw new Error("hello")
|
throw new Error("hello")
|
||||||
@ -40,12 +33,9 @@ Error: hello
|
|||||||
at Object.exports.runInThisContext (vm.js:*)
|
at Object.exports.runInThisContext (vm.js:*)
|
||||||
at Object.<anonymous> ([stdin]-wrapper:*:*)
|
at Object.<anonymous> ([stdin]-wrapper:*:*)
|
||||||
at Module._compile (module.js:*:*)
|
at Module._compile (module.js:*:*)
|
||||||
at evalScript (node.js:*:*)
|
at node.js:*:*
|
||||||
at Socket.<anonymous> (node.js:*:*)
|
at doNTCallback0 (node.js:*:*)
|
||||||
at emitNone (events.js:*:*)
|
at process._tickCallback (node.js:*:*)
|
||||||
at Socket.emit (events.js:*:*)
|
|
||||||
at endReadableNT (_stream_readable.js:*:*)
|
|
||||||
at doNTCallback2 (node.js:*:*)
|
|
||||||
100
|
100
|
||||||
|
|
||||||
[stdin]:1
|
[stdin]:1
|
||||||
@ -56,12 +46,9 @@ ReferenceError: y is not defined
|
|||||||
at Object.exports.runInThisContext (vm.js:*)
|
at Object.exports.runInThisContext (vm.js:*)
|
||||||
at Object.<anonymous> ([stdin]-wrapper:*:*)
|
at Object.<anonymous> ([stdin]-wrapper:*:*)
|
||||||
at Module._compile (module.js:*:*)
|
at Module._compile (module.js:*:*)
|
||||||
at evalScript (node.js:*:*)
|
at node.js:*:*
|
||||||
at Socket.<anonymous> (node.js:*:*)
|
at doNTCallback0 (node.js:*:*)
|
||||||
at emitNone (events.js:*:*)
|
at process._tickCallback (node.js:*:*)
|
||||||
at Socket.emit (events.js:*:*)
|
|
||||||
at endReadableNT (_stream_readable.js:*:*)
|
|
||||||
at doNTCallback2 (node.js:*:*)
|
|
||||||
|
|
||||||
[stdin]:1
|
[stdin]:1
|
||||||
var ______________________________________________; throw 10
|
var ______________________________________________; throw 10
|
||||||
|
15
test/parallel/test-cli-eval-event.js
Normal file
15
test/parallel/test-cli-eval-event.js
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
'use strict';
|
||||||
|
|
||||||
|
const common = require('../common');
|
||||||
|
const assert = require('assert');
|
||||||
|
const spawn = require('child_process').spawn;
|
||||||
|
|
||||||
|
const child = spawn(process.execPath, ['-e', `
|
||||||
|
const server = require('net').createServer().listen(0);
|
||||||
|
server.once('listening', server.close);
|
||||||
|
`]);
|
||||||
|
|
||||||
|
child.once('exit', common.mustCall(function(exitCode, signalCode) {
|
||||||
|
assert.equal(exitCode, 0);
|
||||||
|
assert.equal(signalCode, null);
|
||||||
|
}));
|
Loading…
x
Reference in New Issue
Block a user