在同一行上的nodejs REPL输出

时间:2018-09-02 16:52:35

标签: node.js command-line-interface read-eval-print-loop

我正在使用带有本机REPL的nodejs构建CLI应用程序。愚蠢的示例是:

const repl = require('repl')
const myApp = require('myApp')
repl.start({
  eval: (input, context, filename, callback) => {
      const result = myApp(input)
      callback(null, result)
  },
  writer: (result) => result 
         ? 'my result: ' + result
         : ''  // <--- empty result
})

一切都很好,但是会为应用程序的每个响应创建一个换行符。我想重写此行为,并决定是否创建新行。

示例 让我们假装该应用程序为计算器:

$ node index.js
add 5
add 3
result
8

由于add命令没有任何结果,因此应在下一行插入新命令。但是,我从上面的代码中得到的是:

$ node index.js
add 5

add 3

result
8

,在任何0 add调用之后添加一个空行。

如何防止这种情况?

1 个答案:

答案 0 :(得分:0)

因此,我发现可以设置一个参数ignoreUndefined。如果为true,则在调用callback(null, undefined)(结果为空的情况下)时,不会添加新行。

因此,在上面的示例中:

const repl = require('repl')
const myApp = require('myApp')
repl.start({
  ignoreUndefined: true,
  eval: (input, context, filename, callback) => {
      const result = myApp(input)
      callback(null, result)
  },
  writer: (result) => result 
         ? 'my result: ' + result
         : undefined  // <--- empty result
})

docs:https://nodejs.org/api/repl.html

类似的问题:node.js REPL "undefined"