【问题标题】:How to run node js application programmatically using forever如何永远使用以编程方式运行节点 js 应用程序
【发布时间】:2015-01-07 17:21:51
【问题描述】:

我需要运行包含配置信息的节点 js 文件集,它通常必须在其中运行端口号和 IP 地址,然后在 node.js 中使用永远我需要在终端中运行脚本,而无需配置有任何手动输入。

【问题讨论】:

    标签: javascript node.js forever


    【解决方案1】:

    对于程序化方法,您可以使用Forever-Moniter

    var forever = require('forever-monitor');
    
      var child = new (forever.Monitor)('your-filename.js', {
        最大:3,
        沉默:真的,
        选项: []
      });
    
      child.on('退出', function () {
        console.log('your-filename.js has exited after 3 restarts');
      });
    
      child.start();

    【讨论】:

      【解决方案2】:

      您可以使用 child_process 模块。查看文档,那里有一些有用的信息:http://nodejs.org/api/child_process.html

      举个简单的例子

      var exec = require('child_process').exec;
      exec('forever', function callback(error, stdout, stderr){
          // cb
      });
      

      如果你不需要回调/不想等待执行:

      var exec = require('child_process').exec('forever').unref();
      

      这有帮助吗?

      最好的 马克

      编辑:好的,不确定我是否真的明白你的问题的重点,但我的回答结合https://stackoverflow.com/a/23871739/823851 可能会提供一个很好的解决方案。

      【讨论】:

        【解决方案3】:

        用法:

        • 永远启动 hello.js 来启动一个进程。
        • forever list 查看由 forever 启动的所有进程的列表
        • forever stop hello.js 停止进程,或者forever stop 0 停止索引为0 的进程(如forever 列表所示)。

        【讨论】:

          【解决方案4】:

          node-config 是一个很好的模块,用于管理 Node.js 应用程序的不同配置。

          例如,要进行“生产”配置,/config/production.json 将包含:

          {
            "port" : "3000",
            "ip" : "192.168.1.1"
          }
          

          在您的节点应用程序 JS 文件之一中:

          config = require('config')
          ....
          var port = config.port;
          var ip = config.ip;
          

          要以这种配置启动应用程序,只需先从 shell 将 NODE_ENV 设置为生产环境,然后再运行应用程序。

          export NODE_ENV=production
          forever start app.js
          

          根据需要为每个环境制作额外的配置 JSON 文件。未指定环境时使用default.json

          【讨论】:

          • 这不是编程方法。
          • node-config 是一个很棒的模块,但它并没有回答这里的问题。
          猜你喜欢
          • 2016-07-15
          • 2015-09-14
          • 2011-02-27
          • 2018-04-07
          • 2018-05-06
          • 1970-01-01
          • 1970-01-01
          • 2020-03-02
          • 1970-01-01
          相关资源
          最近更新 更多