diff --git a/lib/internal/repl.js b/lib/internal/repl.js index d59b40eb763bdb..dd14f42fa5273c 100644 --- a/lib/internal/repl.js +++ b/lib/internal/repl.js @@ -22,7 +22,7 @@ function createRepl(env, opts, cb) { opts = opts || { ignoreUndefined: false, terminal: process.stdout.isTTY, - useGlobal: false, + useGlobal: true, breakEvalOnSigint: true }; diff --git a/test/parallel/test-repl-require-context.js b/test/parallel/test-repl-require-context.js new file mode 100644 index 00000000000000..798d6f2db30f49 --- /dev/null +++ b/test/parallel/test-repl-require-context.js @@ -0,0 +1,28 @@ +'use strict'; +const common = require('../common'); +const assert = require('assert'); +const cp = require('child_process'); +const path = require('path'); +const child = cp.spawn(process.execPath, ['--interactive']); +const fixture = path.join(common.fixturesDir, 'is-object.js').replace(/\\/g, + '/'); +let output = ''; + +child.stdout.setEncoding('utf8'); +child.stdout.on('data', (data) => { + output += data; +}); + +child.on('exit', common.mustCall(() => { + const results = output.split('\n').map((line) => { + return line.replace(/\w*>\w*/, '').trim(); + }); + + assert.deepStrictEqual(results, ['undefined', 'true', 'true', '']); +})); + +child.stdin.write('const isObject = (obj) => obj.constructor === Object;\n'); +child.stdin.write('isObject({});\n'); +child.stdin.write(`require('${fixture}').isObject({});\n`); +child.stdin.write('.exit'); +child.stdin.end();