试图调用child_process.spawn的Meteor方法,得到TypeError:child_process.spawn不是函数

时间:2016-11-24 11:35:36

标签: node.js meteor typescript child-process spawn

我试图从客户端组件中调用Meteor.method:

Meteor.call('execute', this.parameter);

Meteor.methods有一个函数可以产生如下过程:

cp.spawn(pathtoscript, ['-t', parameter.myid], options);

这是一个成功执行的有效进程spawn(最多需要30秒才能完成),但是在调用后,浏览器控制台会立即发出错误:

  

模拟调用'execute'TypeError的效果时出现异常:   cp.spawn不是函数(...)TypeError:cp.spawn不是函数

我试过产生这个过程并退出该函数,我也试图等待'close'事件。两次在后端执行都是成功的,但是浏览器控制台会抛出异常。

我也试图异步调用Meteor.methods

Meteor.call('execute', this.parameter, function(error, result) {
    if (error) {
        alert(error, error.reason);
    }
        console.log(result);
    });*/

在Meteor.methods中添加返回值。它总是以同样的方式结束。

在这种情况下,您能否告知产卵过程的正确方法?

1 个答案:

答案 0 :(得分:0)

这是因为您的方法代码同时位于客户端和服务器中。它无法在客户端上运行,因为浏览器中没有spawn

要解决此问题,您只需将方法移动到服务器代码,或者只将其包含在条件为if的{​​{1}}语句中:

Meteor.isServer