mirror of
https://github.com/nodejs/node.git
synced 2025-05-07 15:35:41 +00:00

When running the REPL as standalone program it's now possible to use `process.on('uncaughtException', listener)`. It is going to use those listeners from now on and the regular error output is suppressed. It also fixes the issue that REPL instances started inside of an application would silence all application errors. It is now prohibited to add the exception listener in such REPL instances. Trying to add such listeners throws an `ERR_INVALID_REPL_INPUT` error. Fixes: https://github.com/nodejs/node/issues/19998 PR-URL: https://github.com/nodejs/node/pull/27151 Fixes: https://github.com/nodejs/node/issues/19998 Reviewed-By: Lance Ball <lball@redhat.com> Reviewed-By: Rich Trott <rtrott@gmail.com>
39 lines
871 B
JavaScript
39 lines
871 B
JavaScript
'use strict';
|
|
const common = require('../common');
|
|
const assert = require('assert');
|
|
const cp = require('child_process');
|
|
const child = cp.spawn(process.execPath, ['-i']);
|
|
let output = '';
|
|
|
|
child.stdout.setEncoding('utf8');
|
|
child.stdout.on('data', (data) => {
|
|
output += data;
|
|
});
|
|
|
|
child.on('exit', common.mustCall(() => {
|
|
const results = output.split('\n');
|
|
results.shift();
|
|
assert.deepStrictEqual(
|
|
results,
|
|
[
|
|
'Type ".help" for more information.',
|
|
// x\n
|
|
'> Thrown:',
|
|
'ReferenceError: x is not defined',
|
|
// Added `uncaughtException` listener.
|
|
'> short',
|
|
'undefined',
|
|
// x\n
|
|
'> Foobar',
|
|
'> '
|
|
]
|
|
);
|
|
}));
|
|
|
|
child.stdin.write('x\n');
|
|
child.stdin.write(
|
|
'process.on("uncaughtException", () => console.log("Foobar"));' +
|
|
'console.log("short")\n');
|
|
child.stdin.write('x\n');
|
|
child.stdin.end();
|