【问题标题】:local development with secrets具有秘密的本地开发
【发布时间】:2023-01-04 18:34:07
【问题描述】:

我正在按照本指南使用 cloudflare workers 将秘密添加到我的生产环境中:
https://developers.cloudflare.com/workers/platform/environment-variables/#comparing-secrets-and-environment-variables

我可以通过wrangler secret put 添加新的秘密,并且我在仪表板中看到了它们。当我使用 wrangler 在本地运行我的代码时,它看起来不像是注入了变量。我收到这样的错误:

Uncaught ReferenceError: TOKEN is not defined
  at line 0

    at throwFetchError (/Users/justin.beckwith/.nvm/versions/node/v16.14.0/lib/node_modules/wrangler/wrangler-dist/cli.js:134316:17)
    at fetchResult (/Users/justin.beckwith/.nvm/versions/node/v16.14.0/lib/node_modules/wrangler/wrangler-dist/cli.js:134287:5)
    at processTicksAndRejections (node:internal/process/task_queues:96:5)
    at async previewToken (/Users/justin.beckwith/.nvm/versions/node/v16.14.0/lib/node_modules/wrangler/wrangler-dist/cli.js:134658:29)
    at async createWorker (/Users/justin.beckwith/.nvm/versions/node/v16.14.0/lib/node_modules/wrangler/wrangler-dist/cli.js:134675:17)
    at async start (/Users/justin.beckwith/.nvm/versions/node/v16.14.0/lib/node_modules/wrangler/wrangler-dist/cli.js:136075:16) {

我知道秘密已经设定,据我所知,这些值应该是自动注入的。关于我在这里缺少什么的任何想法?谢谢!

【问题讨论】:

  • 您是否偶然发现了如何进行这项工作?这两个答案都为wrangler.toml 中定义的普通环境变量提供了工作,但它不会自动注入我通过wrangler secret put 放置的秘密。

标签: cloudflare-workers


【解决方案1】:

要在 Typescript 中扩展上面的 melops 答案:

interface Env {
  var_name: var_type
}

export default {
  async fetch(request: Request, env: Env, context: ExecutionContext): Promise<Response> {
    console.log(env);
  },
};

【讨论】:

  • 他正在使用 javascript
【解决方案2】:

我从here 得到了答案。您可以创建名为.dev.vars 的文件,并将秘密放入文件中。当您使用命令$ wrangler dev时,Wrangler 2 将自动绑定

例子:

  1. 将秘密放入.dev.vars文件
    API_KEY_0 = "YOU_SECRET_0"
    API_KEY_1 = "YOU_SECRET_1"
    
    1. 运行下面的命令,您可以在终端中看到这一点。
    $ wrangler dev
    
    ...
    
    Your worker has access to the following bindings:
    - Vars:
      - API_KEY_0: "(hidden)"
      - API_KEY_1: "(hidden)"
    
    ...
    
    1. 你输入.ts.js
    interface Env {
      API_KEY_0: string
      API_KEY_1: string
    }
    
    export default {
      async fetch(request: Request, env: Env, context: ExecutionContext): Promise<Response> {
        console.log(env.API_KEY_0, env.API_KEY_1)
      }
    }
    
    export default {
      async fetch(request, env, context) {
        console.log(env.API_KEY_0, env.API_KEY_1)
      }
    }
    

    供你参考

【讨论】:

    【解决方案3】:

    如果您使用的是 Module Workers,您应该能够通过 env 访问您的秘密。

    export default {
        async fetch(request, env, context) {
          return new Response(`TOKEN: ${env.TOKEN}`)
        }
    }
    

    我目前使用的是wrangler2 0.0.17 版

    【讨论】:

      猜你喜欢
      • 2019-06-09
      • 1970-01-01
      • 2019-06-29
      • 1970-01-01
      • 2019-12-17
      • 1970-01-01
      • 2021-03-13
      • 1970-01-01
      • 2015-03-29
      相关资源
      最近更新 更多