根据nuxt.config.js中的服务器创建动态环境变量

时间:2019-08-28 13:17:23

标签: javascript vue.js nuxt.js

我在nuxt.config.js文件内的ENV数据下方添加了

env: {
      apiUrl: 'http://mywebsite.local/api/',
      webUrl: 'http://mywebsite.local/',

      apiUrl: 'https://mywebsite.live/api/',
      webUrl: 'https://mywebsite.live/'
},

根据环境,我保留两行注释。因此,当我在本地工作时,我用mywebsite.live url注释了这两行。当文件上传到服务器时,我用URL mywebsite.local注释了这两行。

我想做的是代码应该检测站点是在本地运行还是在服务器上运行,并基于此使用ENV配置。我该怎么办?

2 个答案:

答案 0 :(得分:1)

您可以使用以下环境变量production来判断您是在development还是process.env.NODE_ENV中,您可以在三元运算符中使用它来解决问题。

env: {
  apiUrl: process.env.NODE_ENV === "production" ? 'https://mywebsite.live/api/' : 'http://mywebsite.local/api/',
  webUrl: process.env.NODE_ENV === "production" ? 'https://mywebsite.live/' : 'http://mywebsite.local/'
}

答案 1 :(得分:1)

建议您不要签出dotenv nuxt module或使用dotenv itself。而不是将环境变量硬编码到nuxt.config中。

这样,您可以在所需的每个环境上设置实际的.env文件,或者,如果您使用Netlify或类似的部署工具,也可以使用其工具来设置环境密钥

如果您开始有多个环境,这还将避免嵌套if-else语句,并使代码更整洁。

如果您仍然想对其进行硬编码,则可以执行此处已经建议的操作,并在nuxt-config中使用if / else或三元操作,例如:

env: {
  apiUrl: process.env.NODE_ENV === "production" ? 'https://mywebsite.live/api/' : 'http://mywebsite.local/api/',
  webUrl: process.env.NODE_ENV === "production" ? 'https://mywebsite.live/' : 'http://mywebsite.local/'
}

但是再说一次,我推荐这种方法。