我在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配置。我该怎么办?
答案 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/'
}
但是再说一次,我不推荐这种方法。