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