javascript - 在javascript中使用child_process执行shell命令

标签 javascript node.js express asynchronous child-process

尝试从浏览器执行 shell 命令(任意)并使用 child_process 在 Ui 上打印结果。

无法从命令行异步获取结果。我在这里遗漏了什么吗?

   const exec = require('child_process').exec;
    app.post('/plan',(req, res) => {

      let cmd = exec('dir');
      let output = "";
      cmd.stdout.on('data', (data) => {
        //console.log(`stderr: ${data}`);
        output += data;
       });
      res.send(output);                          //not working
      console.log(output);                       //its empty
      cmd.stderr.on('data', (data) => {
          console.log(`stderr: ${data}`);
       });
      cmd.on('close', (code) => {
         console.log(`child process exited with code ${code}`);
      });

    });

最佳答案

shell 命令异步运行。您需要从回调函数内发送响应,以便在执行完成时发送结果。

  cmd.stdout.on('data', (data) => {
    output += data;
    res.send(output); 
   });

这样做可能会更干净:

const exec = require('child_process').exec;
app.post('/plan',(req, res) => {
  exec('dir', (error, stdout, stderr) => {
    if (error) {
      res.status(500).send(stderr);
      return;
    }
    res.send(stdout);
  });
});

关于javascript - 在javascript中使用child_process执行shell命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53623827/

相关文章:

javascript - 不使用 JQuery 通过包含数量来编译数组

javascript - 如何在带有 JS 的模板中显示包含 HTML 和 JavaScript 的 Python 字符串列表

javascript - 如何使用JS获取h1标签的值?

javascript - 如何解决 Mongoose 对象保存问题?

node.js - 如何使用 Sequelizejs 一起解决多个查询

mysql - ER_BAD_FIELD_ERROR : Unknown column 'table.column' in 'on clause'

javascript - 在同一端口上运行多个 Node (Express) 应用程序

javascript - 如何在 require() 语句中正确传递构造函数参数?

javascript - 如何在 mocha 测试中使用 Node.js 全局变量

node.js - 使用 Node 、 Passport 和连接闪存...为什么我的闪存方法未定义?