【发布时间】:2016-08-08 06:28:23
【问题描述】:
我正在尝试为 CLI 编写一个测试,该 CLI 使用 Node.js 的 readline 模块来打印和捕获来自用户的信息,但我似乎无法从标准输出中捕获任何内容。下面是我面临的问题的一个简单版本。
app.js:
#!/usr/bin/env node
const readline = require('readline')
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout
})
rl.write('hello\n')
process.exit()
runner.js:
const spawn = require('child_process').spawn
const rl = spawn(__dirname + '/app.js')
rl.stdout.on('data', chunk => {
console.log('stdout says', chunk.toString())
})
运行runner.js,我希望看到输出stdout says hello,但没有打印。
但是,如果我直接运行 app.js,hello 会打印到控制台。此外,如果我使用其他 readline 方法(例如 question),处理程序将触发预期的数据。
为什么这段代码没有按预期工作?怎么改才能工作?
【问题讨论】:
标签: javascript node.js