我有两个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
我预计会发生以下情况:
重启命令fires
ecosystem.config.js
触发npm start
命令并设置一些环境variables
TEST_VAR
(在原始命令中设置)实际上,生态系统中的env都是正确设置的,但是TEST_VAR在应用程序中是不可用的。为什么要这样做,如果我不能这样做,我应该如何从CI工具中设置密钥?
发布于 2019-11-30 02:38:35
我今晚也遇到了同样的问题。在查找了所有需要配置的地方之后。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
中提供。这些urls帮助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/
发布于 2021-01-17 01:51:10
另一个想法是通过以下方式将all -- PM2的env
参数传递给服务器。
ecosystem.config.js
为:
module.exports = {
apps: [{
name: "my-service-1",
script: "dist/server.js",
env_production: process.env, // pass all the env params of the container to node
}],
};
发布于 2021-03-09 05:23:08
@webface
您的示例中的环境变量在Nextjs中不可用。要使客户端和服务器都可用,变量必须以NEXT_PUBLIC (即。NEXT_PUBLIC_API_VERSION)。
这些环境变量必须传递到构建过程中,才能在运行时可用。
https://stackoverflow.com/questions/58771074
复制相似问题