如何在本地开发环境中使用CloudFlare Worker中的环境变量

Mat*_*ols 9 environment-variables cloudflare-workers

我有一个 CloudFlare Worker,在 CF 设置..环境变量界面中设置了环境变量。我也有这个 wrangler.toml

我的牧马人.toml

在我的工作人员的 index.js 中,我有读取变量 REGISTRATION_API_URL 的代码。如果代码在已部署的环境中运行,那么它会将 CF 设置中的值注入 REGISTRATION_API_URL 中。

但如果我运行 wrangler devwrangler dev --env local 则 REGISTRATION_API_URL 未定义。

最初我预计该变量将由 CF 设置值填充,但事实并非如此。所以我尝试了这里显示的 wrangler.toml 中的两个变量设置,但没有区别。我花了很多时间搜索文档和更大的网络。

本地开发环境是否支持环境变量?人们想出了任何解决方法吗?目前我正在寻找未定义的变量并使用硬编码值定义变量,但这不是一个很好的答案。

使用牧马人1.16.0

谢谢。

Ale*_*ara 8

IMO 文档可能更清晰,但如果您使用较新的模块语法,这些变量将无法用作全局变量。

\n
\n

模块工作人员的环境变量

\n

部署模块工作线程时,任何绑定都不能用作全局运行时变量。相反,它们作为参数传递给处理程序\xe2\x80\x93 请参阅FetchEvent 文档以获取进一步的比较和示例

\n
\n

这是一个例子。

\n
export default {\n    async fetch(request, env, context) {\n        return new Response(env.MY_VAR);\n    }\n};\n
Run Code Online (Sandbox Code Playgroud)\n

KV 命名空间也可以在同一对象中使用。

\n


hko*_*hko -2

也许有点晚了,但是:不,我认为你不能

但是:您始终可以使用 self["YOUR_ENV_VARIABLE"] 来获取值,然后从那里开始(不幸的是文档没有提到这一点)

以下是我个人在 Workers Site 项目中获取发布版本的方法(通常通过管道/操作插入,然后通过 HtmlRewriter 插入到 index.html 中):

const releaseVersion = self["RELEASE_VERSION"] || 'unknown'
Run Code Online (Sandbox Code Playgroud)