gpt4 book ai didi

shell - 通过 PM2 将环境变量传递给 NextJS

转载 作者:行者123 更新时间:2023-12-04 11:45:39 25 4
gpt4 key购买 nike

我有 2 package.json看起来像这样的脚本:

"start": "next start -p $PORT",
"pm2_staging": "pm2 restart ecosystem.config.js --env staging",

还有一个 ecosystem.config.js看起来像这样:
module.exports = {
apps: [
{
name: 'test.co.uk',
script: 'npm',
args: 'start',
env_staging: {
API: 'staging',
NODE_ENV: 'production',
PORT: 3001,
},
},
],
};

然后我运行以下命令:
TEST_VAR='test' npm run pm2_staging

我希望发生以下情况:
  • PM2 重启命令触发
  • ecosystem.config.js触发 npm start命令并设置一些环境变量
  • 应用程序启动并且所有环境变量都可用,包括 TEST_VAR (原命令中设置)

  • 实际发生的是生态系统中的所有环境变量都已正确设置,但 TEST_VAR 在应用程序中不可用。为什么会这样,如果我不能这样做,我该如何从 CI 工具设置 key ?

    最佳答案

    我今晚遇到了同样的问题。在查看了我发现所需配置的每个地方之后。 env 变量需要进入您的 ecosystem.config.js像下面。就我而言,我将它放在服务器的根目录中

      module.exports = {
    apps : [{
    name: 'nextjs',
    script: 'yarn',
    args:"start",
    cwd:"/var/www/myapp/",
    instances: 2,
    autorestart: true,
    watch: false,
    max_memory_restart: '1G',
    env: {
    NODE_ENV: 'development'
    },
    env_production: {
    NODE_ENV: 'production',
    API_URL: 'YOUR ENV URL',
    PORT:8000
    }
    }]
    };
    package.json像这样
    "scripts": {
    "dev": "next",
    "build": "next build",
    "start": "next start -p 8000"
    },
    ...

    并执行了这样的事情
    #!/bin/bash
    cd /var/www/myapp/
    git pull && yarn install && yarn build
    cd ~/
    pm2 start ecosystem.config.js --env production

    然后是 API_URL将在 const API_URL = process.env.API_URL 中可用在您的应用程序中。
    这些网址有帮助
    https://willandskill.se/en/setup-a-next-js-project-with-pm2-nginx-and-yarn-on-ubuntu-18-04/
    https://pm2.keymetrics.io/docs/usage/application-declaration/

    关于shell - 通过 PM2 将环境变量传递给 NextJS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58771074/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com