我需要知道我的工作脚本是否在本地使用
wrangler dev
运行
或者它在 wrangelr publish
之后在 cloudflare 运行。
是否有环境变量告诉我这一点,或者请求标头?
代码片段将受到高度赞赏。 谢谢你。
没有内置变量,但您可以通过在 wrangler.toml 中定义 环境来自行填充此类信息
例如,如果我们说最上面的
[vars]
用于生产,我们可以声明另一个用于 local
环境的变量集。 (环境名称无关)
type = "webpack"
webpack_config = "webpack.config.js"
# these will be used in production
vars = { WORKER_ENV = "production", SENTRY_ENABLED = true }
[env.local]
# these will be used only when --env=local
vars = { WORKER_ENV = "local", SENTRY_ENABLED = false }
从那时起,如果您使用本地运行您的工作人员
wrangler dev --env=local
绑定值
WORKER_ENV
将按照 [env.local.vars]
下的定义进行填充。
顺便说一句,上面
wrangler.toml
的语法相当于
type = "webpack"
webpack_config = "webpack.config.js"
[vars]
WORKER_ENV = "production"
SENTRY_ENABLED = true
[env]
[env.local]
[env.local.vars]
WORKER_ENV = "local"
SENTRY_ENABLED = false
我相信这样更容易理解
我相信现在有官方更新(截至 2022 年 11 月):
本地开发时,可以在目录下创建.dev.vars文件 项目根目录允许您定义将使用的变量 运行 Wrangler dev 或 Wrangler Pages dev 时,而不是使用 另一个环境和 [vars] 在 wrangler.toml 中。
这就是我正在使用的方式:
在项目根目录中创建一个文件
.dev.var
并定义一个变量来检测环境。在下面的例子中,我使用的是 IS_LOCAL_MODE
IS_LOCAL_MODE=true
现在将此变量放入 Cloudflare 以在生产环境中使用它
wrangler secret put IS_LOCAL_MODE
然后填写值为
false
就是这样。现在在您的代码中,为了检查模式,我们将执行类似的操作
if(env.IS_LOCAL_MODE){
console.log("Hello admin, you are in dev mode")
}else{
console.log("Silence is gold!")
}
编码快乐!