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(' +
|
||||
JSON.stringify(body) + ', { filename: ' +
|
||||
JSON.stringify(name) + ' });\n';
|
||||
var result = module._compile(script, name + '-wrapper');
|
||||
if (process._print_eval) console.log(result);
|
||||
// Defer evaluation for a tick. This is a workaround for deferred
|
||||
// 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) {
|
||||
|
@ -6,9 +6,9 @@ SyntaxError: Strict mode code may not include a with statement
|
||||
at Object.exports.runInThisContext (vm.js:*)
|
||||
at Object.<anonymous> ([eval]-wrapper:*:*)
|
||||
at Module._compile (module.js:*:*)
|
||||
at evalScript (node.js:*:*)
|
||||
at startup (node.js:*:*)
|
||||
at node.js:*:*
|
||||
at doNTCallback0 (node.js:*:*)
|
||||
at process._tickCallback (node.js:*:*)
|
||||
42
|
||||
42
|
||||
[eval]:1
|
||||
@ -19,9 +19,9 @@ Error: hello
|
||||
at Object.exports.runInThisContext (vm.js:*)
|
||||
at Object.<anonymous> ([eval]-wrapper:*:*)
|
||||
at Module._compile (module.js:*:*)
|
||||
at evalScript (node.js:*:*)
|
||||
at startup (node.js:*:*)
|
||||
at node.js:*:*
|
||||
at doNTCallback0 (node.js:*:*)
|
||||
at process._tickCallback (node.js:*:*)
|
||||
[eval]:1
|
||||
throw new Error("hello")
|
||||
^
|
||||
@ -30,9 +30,9 @@ Error: hello
|
||||
at Object.exports.runInThisContext (vm.js:*)
|
||||
at Object.<anonymous> ([eval]-wrapper:*:*)
|
||||
at Module._compile (module.js:*:*)
|
||||
at evalScript (node.js:*:*)
|
||||
at startup (node.js:*:*)
|
||||
at node.js:*:*
|
||||
at doNTCallback0 (node.js:*:*)
|
||||
at process._tickCallback (node.js:*:*)
|
||||
100
|
||||
[eval]:1
|
||||
var x = 100; y = x;
|
||||
@ -42,9 +42,9 @@ ReferenceError: y is not defined
|
||||
at Object.exports.runInThisContext (vm.js:*)
|
||||
at Object.<anonymous> ([eval]-wrapper:*:*)
|
||||
at Module._compile (module.js:*:*)
|
||||
at evalScript (node.js:*:*)
|
||||
at startup (node.js:*:*)
|
||||
at node.js:*:*
|
||||
at doNTCallback0 (node.js:*:*)
|
||||
at process._tickCallback (node.js:*:*)
|
||||
[eval]:1
|
||||
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.<anonymous> ([stdin]-wrapper:*:*)
|
||||
at Module._compile (module.js:*:*)
|
||||
at evalScript (node.js:*:*)
|
||||
at Socket.<anonymous> (node.js:*:*)
|
||||
at emitNone (events.js:*:*)
|
||||
at Socket.emit (events.js:*:*)
|
||||
at endReadableNT (_stream_readable.js:*:*)
|
||||
at doNTCallback2 (node.js:*:*)
|
||||
at node.js:*:*
|
||||
at doNTCallback0 (node.js:*:*)
|
||||
at process._tickCallback (node.js:*:*)
|
||||
42
|
||||
42
|
||||
@ -25,12 +21,9 @@ Error: hello
|
||||
at Object.exports.runInThisContext (vm.js:*)
|
||||
at Object.<anonymous> ([stdin]-wrapper:*:*)
|
||||
at Module._compile (module.js:*:*)
|
||||
at evalScript (node.js:*:*)
|
||||
at Socket.<anonymous> (node.js:*:*)
|
||||
at emitNone (events.js:*:*)
|
||||
at Socket.emit (events.js:*:*)
|
||||
at endReadableNT (_stream_readable.js:*:*)
|
||||
at doNTCallback2 (node.js:*:*)
|
||||
at node.js:*:*
|
||||
at doNTCallback0 (node.js:*:*)
|
||||
at process._tickCallback (node.js:*:*)
|
||||
|
||||
[stdin]:1
|
||||
throw new Error("hello")
|
||||
@ -40,12 +33,9 @@ Error: hello
|
||||
at Object.exports.runInThisContext (vm.js:*)
|
||||
at Object.<anonymous> ([stdin]-wrapper:*:*)
|
||||
at Module._compile (module.js:*:*)
|
||||
at evalScript (node.js:*:*)
|
||||
at Socket.<anonymous> (node.js:*:*)
|
||||
at emitNone (events.js:*:*)
|
||||
at Socket.emit (events.js:*:*)
|
||||
at endReadableNT (_stream_readable.js:*:*)
|
||||
at doNTCallback2 (node.js:*:*)
|
||||
at node.js:*:*
|
||||
at doNTCallback0 (node.js:*:*)
|
||||
at process._tickCallback (node.js:*:*)
|
||||
100
|
||||
|
||||
[stdin]:1
|
||||
@ -56,12 +46,9 @@ ReferenceError: y is not defined
|
||||
at Object.exports.runInThisContext (vm.js:*)
|
||||
at Object.<anonymous> ([stdin]-wrapper:*:*)
|
||||
at Module._compile (module.js:*:*)
|
||||
at evalScript (node.js:*:*)
|
||||
at Socket.<anonymous> (node.js:*:*)
|
||||
at emitNone (events.js:*:*)
|
||||
at Socket.emit (events.js:*:*)
|
||||
at endReadableNT (_stream_readable.js:*:*)
|
||||
at doNTCallback2 (node.js:*:*)
|
||||
at node.js:*:*
|
||||
at doNTCallback0 (node.js:*:*)
|
||||
at process._tickCallback (node.js:*:*)
|
||||
|
||||
[stdin]:1
|
||||
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