javascript - 在终端显示后立即检索输出(Javascript / ShellJS)
问题描述
我有一个问题,当命令运行时,我无法读取我的 shelljs 命令(执行 java)的输出。我不知道是否清楚,但基本上我希望这个 shelljs 命令一出现就输出,而不是在 java 程序完成后输出。提前感谢您的回答。
process = shell.exec('exec java.......', {async: true}, function(code, stdout, stderr) {
//Here I need the output
console.log('Exit code:', code);
console.log('Program output:', stdout);
console.log('Program stderr:', stderr);
});
解决方案
您需要使用spawn
而不是exec
因为在简单地等待执行完成spawn
时发出事件。exec
更多信息:https ://nodejs.org/api/all.html#child_process_child_process
const spawn = require('child_process').spawn;
const cmd = spawn('exec java......');
cmd.stdout.on('data', function (data) {
console.log('Program output:', data.toString());
});
cmd.stderr.on('data', function (data) {
console.log('Program stderr:', data.toString());
});
cmd.on('exit', function (code) {
console.log('Exit code:', code.toString());
});
推荐阅读
- docker - 无法拉取微软的 docker 容器
- php - 拉拉维尔。具有关系的模型中的范围()
- terraform0.12+ - 将变量传递给 Terraform 模块中的 .sh 脚本
- python-3.x - 是否可以使用 cython 在数组中优化值索引查找?
- visual-studio - 使用 Visual Studio 2019 为 CAPL 创建 dll 文件时遇到问题
- r - 重复更新数据矩阵 X 和响应 y 的 R 代码
- delphi - 帕斯卡:变量 i:1..10;
- python - 我可以使用 PyArrow 的 Plasma In-Memory Object Store 作为 LRU 缓存吗?
- slurm - 提交 Snakemake 管道时 Slurm 上的 JobHeldAdmin 状态
- .net - 如何创建基于索引的 xpath 多个开发元素