Javascript 从REPL中更改REPL提示符
我试图用REPL中给出的文本更改节点REPL的提示 我最初的尝试是这样的Javascript 从REPL中更改REPL提示符,javascript,node.js,read-eval-print-loop,Javascript,Node.js,Read Eval Print Loop,我试图用REPL中给出的文本更改节点REPL的提示 我最初的尝试是这样的 import repl from 'repl' let PROMPT = 'original > ' repl.start({ ignoreUndefined: true, prompt: PROMPT, eval: (text, context, filename, callback) => { PROMPT = `${text} >` return callback()
import repl from 'repl'
let PROMPT = 'original > '
repl.start({
ignoreUndefined: true,
prompt: PROMPT,
eval: (text, context, filename, callback) => {
PROMPT = `${text} >`
return callback()
}
})
我意识到这是行不通的,因为repl的提示是在进程启动时设置的
我想出了这样的方法,在输入命令后,用一个新的提示符启动一个新的repl
import repl from 'repl'
let PROMPT = 'original > '
let REPL = createRepl(PROMPT)
function createRepl (prompt) {
return repl.start({
ignoreUndefined: true,
prompt: PROMPT,
eval: (text, context, filename, callback) => {
PROMPT = `${text.replace(/\n/, '')} >`
REPL.close()
REPL = createRepl(PROMPT)
}
})
}
这个解决方案几乎已经存在了,问题是当我关闭原始REPL时,进程正在退出
我只是尝试在进程启动后从脚本内部更改REPL提示符。我愿意用任何方法来做这件事。理想情况下,
prompt
prop接受一个带有prompt
参数的函数,并允许您从函数中设置它,然后我可以使用事件或其他东西。您应该能够调用repl.setPrompt('foo>)
更改提示。为什么未在中记录此信息?嗯,无论如何,它对我不起作用,node--version
是v10.11.0
@masterxilo我不知道为什么它没有被记录下来,但它肯定仍然有效。您必须使用repl.setPrompt()
其中repl
是require('repl').start()返回的对象。