nodejs REPL 输出在同一行上



我正在使用具有本机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

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

我该如何防止这种情况?

所以我发现有一个参数可以设置,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
})

文档:https://nodejs.org/api/repl.html

类似问题:节点.js REPL "未定义">

最新更新