Vue.js / Template:使用.env?

时间:2018-02-15 09:34:00

标签: webpack vue.js environment-variables cloudfoundry

我有一个基于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_IDAPI_URL都未定义(尽管变量是在cf配置中设置的) - 为什么?

2 个答案:

答案 0 :(得分:1)

您需要从.env文件中读取的dotenv这样的包。您的shell环境变量将在process.env中可用,但节点默认情况下不会处理.env个文件。

答案 1 :(得分:0)

您应该能够使用通过Cloud Foundry设置的环境变量来完成您想要的任务。

例如:

  1. cf push your-app --no-start
  2. cf set-env your-app NODE_ENV 'development'
  3. cf start your-app
  4. 然后process.env应将NODE_ENV设置为development。默认情况下,NODE_ENV应设置为production,因为Node.js buildpack会自动设置。您可以以完全相同的方式设置其他变量。

    您不需要第三方库来阅读它们。 Cloud Foundry应将它们作为实际环境变量公开给您的流程,您可以使用标准方法读取您所选语言的环境变量(例如,Node.js中的process.env)。

    或者,您可以在CF cli manifest.yml文件中设置环境变量。如果你有很多设置,这可以更方便,因为它允许你一次设置它们而你不需要单独推/启,如上例所示。详情here

    希望有所帮助!