我正在研究一个小Meteor应用程序,我需要对另一个程序执行一些命令,获取这些结果,然后在服务器端处理这些结果。我找到了几个类似的答案,如下所示,但它们并不是我需要的:
Meteor JS: use external script
实施例
客户端显示有关存储在a上的文件的信息 第三方服务
当客户端请求文件时,服务器会调用其他程序(bash 在这种情况下的脚本)来检索文件
检索后,该文件可供客户下载
我有#1和#3工作,减去一些额外的测试我将在我弄清楚如何做#2后整合。我想我可能需要的是一种让Meteor执行驻留在服务器上的任意代码的方法吗?
答案 0 :(得分:0)
这个blog post显示了如何使用NPM中的fibers
包在Meteor中运行shell命令。
安装光纤:
npm -g install fibers
运行您的bash代码:
// Load future from fibers
var Future = Npm.require("fibers/future");
// Load exec
var exec = Npm.require("child_process").exec;
// Server methods
Meteor.methods({
runCode: function () {
// This method call won't return immediately, it will wait for the
// asynchronous code to finish, so we call unblock to allow this client
// to queue other method calls (see Meteor docs)
this.unblock();
var future=new Future();
var command="pwd";
exec(command,function(error,stdout,stderr) {
if(error) {
console.log(error);
throw new Meteor.Error(500,command+" failed");
}
future.return(stdout.toString());
});
return future.wait();
}
});
您也可以尝试使用一些AtmosphereJS软件包,例如jchristman:exec。