mirror of https://github.com/nodejs/node.git
repl: check for NODE_REPL_EXTERNAL_MODULE
PR-URL: https://github.com/nodejs/node/pull/29778 Reviewed-By: Colin Ihrig <cjihrig@gmail.com> Reviewed-By: Yongsheng Zhang <zyszys98@gmail.com>pull/29778/head
parent
06f6d662f6
commit
c0305af2c4
|
@ -1121,6 +1121,14 @@ Path to the file used to store the persistent REPL history. The default path is
|
|||
`~/.node_repl_history`, which is overridden by this variable. Setting the value
|
||||
to an empty string (`''` or `' '`) disables persistent REPL history.
|
||||
|
||||
### `NODE_REPL_EXTERNAL_MODULE=file`
|
||||
<!-- YAML
|
||||
added: REPLACEME
|
||||
-->
|
||||
|
||||
Path to a Node.js module which will be loaded in place of the built-in REPL.
|
||||
Overriding this value to an empty string (`''`) will use the built-in REPL.
|
||||
|
||||
### `NODE_TLS_REJECT_UNAUTHORIZED=value`
|
||||
|
||||
If `value` equals `'0'`, certificate validation is disabled for TLS connections.
|
||||
|
|
|
@ -19,38 +19,44 @@ prepareMainThreadExecution();
|
|||
|
||||
markBootstrapComplete();
|
||||
|
||||
// --input-type flag not supported in REPL
|
||||
if (getOptionValue('--input-type')) {
|
||||
// If we can't write to stderr, we'd like to make this a noop,
|
||||
// so use console.error.
|
||||
console.error('Cannot specify --input-type for REPL');
|
||||
process.exit(1);
|
||||
}
|
||||
|
||||
console.log(`Welcome to Node.js ${process.version}.\n` +
|
||||
'Type ".help" for more information.');
|
||||
|
||||
const cliRepl = require('internal/repl');
|
||||
cliRepl.createInternalRepl(process.env, (err, repl) => {
|
||||
if (err) {
|
||||
throw err;
|
||||
if (process.env.NODE_REPL_EXTERNAL_MODULE) {
|
||||
require('internal/modules/cjs/loader')
|
||||
.Module
|
||||
._load(process.env.NODE_REPL_EXTERNAL_MODULE, undefined, true);
|
||||
} else {
|
||||
// --input-type flag not supported in REPL
|
||||
if (getOptionValue('--input-type')) {
|
||||
// If we can't write to stderr, we'd like to make this a noop,
|
||||
// so use console.error.
|
||||
console.error('Cannot specify --input-type for REPL');
|
||||
process.exit(1);
|
||||
}
|
||||
repl.on('exit', () => {
|
||||
if (repl._flushing) {
|
||||
repl.pause();
|
||||
return repl.once('flushHistory', () => {
|
||||
process.exit();
|
||||
});
|
||||
}
|
||||
process.exit();
|
||||
});
|
||||
});
|
||||
|
||||
// If user passed '-e' or '--eval' along with `-i` or `--interactive`,
|
||||
// evaluate the code in the current context.
|
||||
if (getOptionValue('[has_eval_string]')) {
|
||||
evalScript('[eval]',
|
||||
getOptionValue('--eval'),
|
||||
getOptionValue('--inspect-brk'),
|
||||
getOptionValue('--print'));
|
||||
console.log(`Welcome to Node.js ${process.version}.\n` +
|
||||
'Type ".help" for more information.');
|
||||
|
||||
const cliRepl = require('internal/repl');
|
||||
cliRepl.createInternalRepl(process.env, (err, repl) => {
|
||||
if (err) {
|
||||
throw err;
|
||||
}
|
||||
repl.on('exit', () => {
|
||||
if (repl._flushing) {
|
||||
repl.pause();
|
||||
return repl.once('flushHistory', () => {
|
||||
process.exit();
|
||||
});
|
||||
}
|
||||
process.exit();
|
||||
});
|
||||
});
|
||||
|
||||
// If user passed '-e' or '--eval' along with `-i` or `--interactive`,
|
||||
// evaluate the code in the current context.
|
||||
if (getOptionValue('[has_eval_string]')) {
|
||||
evalScript('[eval]',
|
||||
getOptionValue('--eval'),
|
||||
getOptionValue('--inspect-brk'),
|
||||
getOptionValue('--print'));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -0,0 +1,3 @@
|
|||
'use strict';
|
||||
|
||||
console.log('42');
|
|
@ -0,0 +1,14 @@
|
|||
'use strict';
|
||||
|
||||
require('../common');
|
||||
const fixtures = require('../common/fixtures');
|
||||
const { execSync } = require('child_process');
|
||||
|
||||
execSync(process.execPath, {
|
||||
encoding: 'utf8',
|
||||
stdio: 'inherit',
|
||||
env: {
|
||||
...process.env,
|
||||
NODE_REPL_EXTERNAL_MODULE: fixtures.path('external-repl-module.js'),
|
||||
},
|
||||
});
|
|
@ -0,0 +1 @@
|
|||
42
|
Loading…
Reference in New Issue