我有一个基于webpack模板的vue.js项目。我们部署到不同的cloudfoundry环境:Dev,Int和Prod。 对于Int和Prod,我想在生产模式下运行应用程序但具有不同的env变量。我尝试使用以下based on a forum thread:
module.exports = {
NODE_ENV: '"production"',
SC_AUTH_CLIENT_ID: JSON.stringify(process.env.AUTH_CLIENT_ID),
API_URL: JSON.stringify(process.env.API_BASE_URL),
};
SC_AUTH_CLIENT_ID
和API_URL
都未定义(尽管变量是在cf配置中设置的) - 为什么?
答案 0 :(得分:1)
您需要从.env
文件中读取的dotenv这样的包。您的shell环境变量将在process.env
中可用,但节点默认情况下不会处理.env
个文件。
答案 1 :(得分:0)
您应该能够使用通过Cloud Foundry设置的环境变量来完成您想要的任务。
例如:
cf push your-app --no-start
cf set-env your-app NODE_ENV 'development'
cf start your-app
然后process.env
应将NODE_ENV
设置为development
。默认情况下,NODE_ENV
应设置为production
,因为Node.js buildpack会自动设置。您可以以完全相同的方式设置其他变量。
您不需要第三方库来阅读它们。 Cloud Foundry应将它们作为实际环境变量公开给您的流程,您可以使用标准方法读取您所选语言的环境变量(例如,Node.js中的process.env
)。
或者,您可以在CF cli manifest.yml
文件中设置环境变量。如果你有很多设置,这可以更方便,因为它允许你一次设置它们而你不需要单独推/启,如上例所示。详情here。
希望有所帮助!