如何在Meteor JS中运行Bash脚本?

时间:2016-08-18 00:55:27

标签: bash meteor

我正在研究一个小Meteor应用程序,我需要对另一个程序执行一些命令,获取这些结果,然后在服务器端处理这些结果。我找到了几个类似的答案,如下所示,但它们并不是我需要的:

Meteor JS: use external script

实施例

  1. 客户端显示有关存储在a上的文件的信息 第三方服务

  2. 当客户端请求文件时,服务器会调用其他程序(bash 在这种情况下的脚本)来检索文件

  3. 检索后,该文件可供客户下载

  4. 我有#1和#3工作,减去一些额外的测试我将在我弄清楚如何做#2后整合。我想我可能需要的是一种让Meteor执行驻留在服务器上的任意代码的方法吗?

1 个答案:

答案 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