Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从REPL中更改REPL提示符_Javascript_Node.js_Read Eval Print Loop - Fatal编程技术网

Javascript 从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()

我试图用REPL中给出的文本更改节点REPL的提示

我最初的尝试是这样的

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()返回的对象。