使用 PORT=XXXX 启动节点永久脚本

starting node forever script with PORT=XXXX

当 运行 节点控制特定端口时,我会这样启动应用程序:

PORT=1234 node app.js

如何将端口传递给 forever 命令?无论我怎么尝试,它似乎都不想工作。

我试过:

PORT=1234 forever start app.js 

您可以尝试将 export PORT=1234 添加到 app.js 然后 运行 和 forever start app.js

如果你永远使用 Node,你可以在你的根目录中创建一个 forever.json 文件,并在数组中的 json 文件中提及你的所有端口。示例:

forever.json

[
   {
      "uid": "app1",
      "append": true,
      "watch": true,
      "script": "server.js",
      "sourceDir": "D:\DEVELOPEMENT\workshop",
      "args": ["--port", "8081", "--ip", "127.0.0.1"]
    },
    {

        "uid": "app2",
        "append": true,
        "watch": true,
        "script": "server.js",
        "sourceDir": "D:\DEVELOPEMENT\workshop" ,
        "args": ["--port", "8082", "--ip", "127.0.0.1"]
      },

      {

        "uid": "app3",
        "append": true,
        "watch": true,
        "script": "server.js",
        "sourceDir": "D:\DEVELOPEMENT\workshop" ,
        "args": ["--port", "8083", "--ip", "127.0.0.1"]
       }
]

提供你的源码目录和脚本(app.js/server.js).

现在运行以上3个应用程序在不同的端口通过命令永远启动forever.json

但是节点永远通过命令行将 ip 和端口传递给我们的程序。因此,要从 process.argv 获取值,我们需要节点的最小包。安装 minimist 然后写下你的 app.js 以通过命令动态提供 ip 和端口(永远会自动执行)。

server.js / app.js

var express = require('express');
var app = express();

const parseArgs = require('minimist') (process.argv.slice(2))
const IP = parseArgs.ip || "127.0.0.1"
const PORT = parseArgs.port || 8000


app.get("/", function (req, res) {
  res.send("Server running on " + IP  + ":" + PORT)
})

console.log("START ", IP+" :",PORT)
app.listen(PORT, IP)

module.exports = app;

现在运行永远开始forever.json并检查forever.json.

中描述的所有端口
PORT=1234 forever start app.js 

不幸的是,这对我不起作用,所以我尝试了这个并且它起作用了:

forever start app.js --port 1234