如何在 Quasar 中使用 CloudFlare Worker 环境变量? (视点)
How to use a CloudFlare Worker Environment Variable in Quasar? (Vue)
您好,新年快乐!
我的 Quasar (v1) 应用程序在环境变量方面遇到了问题。我不想使用 dotenv 或任何其他 Node 包来解决这个问题,因为这些不再是在 Quasar 中使用环境变量的推荐方式。
所以我有一些本地环境变量,我是 setting/using,遵循 Quasar 官方文档上记录的最佳实践:
quasar.conf.js:
build: {
env: {
EXAMPLE: ctx.dev
? JSON.stringify('https://dev.')
: JSON.stringify('https://prod.')
},
这允许我在开发和生产中指定一个不同的端点,正如我所期望的那样,但由于一些明显的原因并不理想。
index.vue:
console.log(process.env.EXAMPLE,'<---API')
我得到了模拟 API 端点的预期输出。好
现在 CloudFlare Workers 的变量是全局范围的(没有 process.env 对象),所以一旦在 wrangler.toml 中配置,应该可以简单地通过名称调用它们:
wrangler.toml:
[vars]
CFEXAMPLE = "example_token"
但这不起作用(如果我按如下方式包含它,我将无法构建我的 Quasar 应用程序)。可能是因为我的 quasar.conf.js
中没有定义 CFEXAMPLE
quasar.conf.js:
build: {
env: {
CFEXAMPLE: CFEXAMPLE
},
我也无法从我的 index.vue 文件中 console.log CFEXAMPLE(但我可以构建我的应用程序并部署到 CloudFlare OK)。
请问让环境变量在 CloudFlare 和本地主机上正常工作的最佳方法是什么?
谢谢
好的,感谢 Michal 的提示。最后我这样做了:
首先创建一个environment.js.
environment.js:
module.exports = {
dev:{
NODE_ENV: 'development',
PROXY_URL: 'xx',
}
},
prod:{
NODE_ENV: 'production',
PROXY_URL: 'zz',
}
}
}
接下来导入它并包含一个函数以return正确的环境变量。
quasar.conf.js:
const config = require('./src/boot/environment.js')
module.exports = function(ctx) {
const getEnvVar = p => {
if (ctx.dev) return (config.dev[p])
else return (config.prod[p])
}
...
最后给env添加环境变量:
quasar.conf.js:
env:{
PROXY_URL:JSON.stringify(getEnvVar('PROXY_URL')),
POST_TO:JSON.stringify(getEnvVar('POST_TO')),
FIRESTORE_CREDS:JSON.stringify(getEnvVar('FIRESTORE_CREDS')),
},
您好,新年快乐!
我的 Quasar (v1) 应用程序在环境变量方面遇到了问题。我不想使用 dotenv 或任何其他 Node 包来解决这个问题,因为这些不再是在 Quasar 中使用环境变量的推荐方式。
所以我有一些本地环境变量,我是 setting/using,遵循 Quasar 官方文档上记录的最佳实践:
quasar.conf.js:
build: {
env: {
EXAMPLE: ctx.dev
? JSON.stringify('https://dev.')
: JSON.stringify('https://prod.')
},
这允许我在开发和生产中指定一个不同的端点,正如我所期望的那样,但由于一些明显的原因并不理想。
index.vue:
console.log(process.env.EXAMPLE,'<---API')
我得到了模拟 API 端点的预期输出。好
现在 CloudFlare Workers 的变量是全局范围的(没有 process.env 对象),所以一旦在 wrangler.toml 中配置,应该可以简单地通过名称调用它们:
wrangler.toml:
[vars]
CFEXAMPLE = "example_token"
但这不起作用(如果我按如下方式包含它,我将无法构建我的 Quasar 应用程序)。可能是因为我的 quasar.conf.js
中没有定义 CFEXAMPLEquasar.conf.js:
build: {
env: {
CFEXAMPLE: CFEXAMPLE
},
我也无法从我的 index.vue 文件中 console.log CFEXAMPLE(但我可以构建我的应用程序并部署到 CloudFlare OK)。
请问让环境变量在 CloudFlare 和本地主机上正常工作的最佳方法是什么?
谢谢
好的,感谢 Michal 的提示。最后我这样做了:
首先创建一个environment.js.
environment.js:
module.exports = {
dev:{
NODE_ENV: 'development',
PROXY_URL: 'xx',
}
},
prod:{
NODE_ENV: 'production',
PROXY_URL: 'zz',
}
}
}
接下来导入它并包含一个函数以return正确的环境变量。
quasar.conf.js:
const config = require('./src/boot/environment.js')
module.exports = function(ctx) {
const getEnvVar = p => {
if (ctx.dev) return (config.dev[p])
else return (config.prod[p])
}
...
最后给env添加环境变量:
quasar.conf.js:
env:{
PROXY_URL:JSON.stringify(getEnvVar('PROXY_URL')),
POST_TO:JSON.stringify(getEnvVar('POST_TO')),
FIRESTORE_CREDS:JSON.stringify(getEnvVar('FIRESTORE_CREDS')),
},