如何在 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')),
      },