为什么insert()会中断Meteor方法中的wrapAsync'd child_process.spawn()处理函数?

亚当·蒙森

我正在尝试使用child_process.spawn()流星方法。我想从外部进程捕获PID,stdout,stderr和退出代码,并将所有这些存储在数据库中。

一切正常,直到我添加了第一个insert()电话。这样insert(),只有一个“虚拟”文档被插入数据库。我在服务器控制台中未收到任何错误消息。如果我先将insert()注释掉,则其他insert()调用成功。

// server/app.js
var spawn = Npm.require('child_process').spawn;

Meteor.methods({
  start: function() {
    var child = spawn('ls', ['/tmp']);
    var pid = child.pid;

    var wrappedChildStdoutOn = Meteor.wrapAsync(child.stdout.on, child.stdout);
    var wrappedChildStderrOn = Meteor.wrapAsync(child.stderr.on, child.stderr);
    var wrappedChildOn = Meteor.wrapAsync(child.on, child);

    // this insert() breaks upcoming insert() calls!
    Stuff.insert({pid: pid, date: new Date(), type: 'dummy', data: 'dummy'});

    wrappedChildStdoutOn('data',  function (data) {
      Stuff.insert({pid: pid, date: new Date(), type: 'stdout', data: data.toString()});
    });

    wrappedChildStderrOn('data', function (data) {
      Stuff.insert({pid: pid, date: new Date(), type: 'stderr', data: data.toString()});
    });

    wrappedChildOn('exit', function (code) {
      Stuff.insert({pid: pid, date: new Date(), type: 'exit', code: code});
    });
  }
});

那第一个insert()电话怎么了?

这是一个演示问题的Meteor应用程序

用户名

insert会花费一些时间,因此请在ls完成之前完成其输出insert到您将事件处理程序放到位时,为时已晚。

您可以通过将第一个移动insert到末尾,将第一个移动insertspawn调用或将no-opfunction () {}回调添加到来解决此问题,insert异步方式进行调用。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为什么insert()会中断Meteor方法中的wrapAsync'd child_process.spawn()处理函数?

来自分类Dev

来自AWS Lambda函数中的spawn child_process的SIGSEGV

来自分类Dev

在节点的 child_process 中运行函数

来自分类Dev

节点JS-Grunt任务中的child_process spawn('npm install')导致ENOENT错误

来自分类Dev

在ExpressJS中处理多个child_process的中间件时出错处理

来自分类Dev

Webpack和TypeScript:无法解析node.d.ts中的模块“ child_process”

来自分类Dev

异步函数vs child_process

来自分类Dev

require(“ child_process”)实际做什么?

来自分类Dev

节点require('child_process')。spawn抛出ENOENT

来自分类Dev

nodejs child_process spawn 命令输入文件

来自分类Dev

child_process成功处理信号后进行回调

来自分类Dev

child_process成功处理信号后进行回调

来自分类Dev

如何模拟Node.js child_process生成函数?

来自分类Dev

等待child_process退出node.js的替代方法

来自分类Dev

无法从node.js中的child_process访问数组

来自分类Dev

在节点child_process中检测python异常

来自分类Dev

在nodejs中与child_process共享数据库连接

来自分类Dev

功能步骤中的黄瓜JS child_process

来自分类Dev

反应本机中的未知模块“ child_process”

来自分类Dev

Node js Google App Engine 中的 child_process

来自分类Dev

当child_process中的exec shell时,child_process中的stdout无法在stdin之前输出右行

来自分类Dev

调用 git shortlog -sn 时节点 child_process spawn 挂起

来自分类Dev

Child_process处理带有回车符(\ r)的STDOUT流

来自分类Dev

child_process无法从批处理文件返回正确的退出代码

来自分类Dev

为什么要在节点中使用child_process而不是集群?

来自分类Dev

child_process生成nodejs中的竞态条件可能性

来自分类Dev

在Gulp中,child_process无法执行上一步生成的JS程序

来自分类Dev

节点 child_process 在 stderr 中为 mongodump 提供有效输出

来自分类Dev

我应该如何使用 child_process 模块在 linux 中通信 python 和 node.js?

Related 相关文章

  1. 1

    为什么insert()会中断Meteor方法中的wrapAsync'd child_process.spawn()处理函数?

  2. 2

    来自AWS Lambda函数中的spawn child_process的SIGSEGV

  3. 3

    在节点的 child_process 中运行函数

  4. 4

    节点JS-Grunt任务中的child_process spawn('npm install')导致ENOENT错误

  5. 5

    在ExpressJS中处理多个child_process的中间件时出错处理

  6. 6

    Webpack和TypeScript:无法解析node.d.ts中的模块“ child_process”

  7. 7

    异步函数vs child_process

  8. 8

    require(“ child_process”)实际做什么?

  9. 9

    节点require('child_process')。spawn抛出ENOENT

  10. 10

    nodejs child_process spawn 命令输入文件

  11. 11

    child_process成功处理信号后进行回调

  12. 12

    child_process成功处理信号后进行回调

  13. 13

    如何模拟Node.js child_process生成函数?

  14. 14

    等待child_process退出node.js的替代方法

  15. 15

    无法从node.js中的child_process访问数组

  16. 16

    在节点child_process中检测python异常

  17. 17

    在nodejs中与child_process共享数据库连接

  18. 18

    功能步骤中的黄瓜JS child_process

  19. 19

    反应本机中的未知模块“ child_process”

  20. 20

    Node js Google App Engine 中的 child_process

  21. 21

    当child_process中的exec shell时,child_process中的stdout无法在stdin之前输出右行

  22. 22

    调用 git shortlog -sn 时节点 child_process spawn 挂起

  23. 23

    Child_process处理带有回车符(\ r)的STDOUT流

  24. 24

    child_process无法从批处理文件返回正确的退出代码

  25. 25

    为什么要在节点中使用child_process而不是集群?

  26. 26

    child_process生成nodejs中的竞态条件可能性

  27. 27

    在Gulp中,child_process无法执行上一步生成的JS程序

  28. 28

    节点 child_process 在 stderr 中为 mongodump 提供有效输出

  29. 29

    我应该如何使用 child_process 模块在 linux 中通信 python 和 node.js?

热门标签

归档