我已经阅读了我能找到的所有文档和 SO 帖子,但在使用
wrangler dev
在本地运行我的工作程序时,我仍然收到“sonarkv 未定义”的消息。这是我所做的:
$ wrangler kv:namespace create "sonarkv" --preview
kv_namespaces = [
{ binding = "sonarkv", id = "5138eb663ac04eb6af5fe72d11966626", preview_id = "67e98d40e1e74329bf2c30dd92289fce" }
]
$ wrangler kv:key list --binding sonarkv --preview
[
{
"name": "somekey"
}
]
$ wrangler kv:key get somekey --binding sonarkv --preview
<...correct value...>
const secret = await sonarkv.get("somekey");
$ wrangler --version
⛅️ wrangler 3.9.0
------------------
我在这里缺少什么?是否需要在仪表板中单独绑定预览命名空间? (当我尝试时,它失败并显示“具有该名称的变量已存在”。)
想通了。尽管在我能找到的任何地方都没有记录这一点,但您现在需要从
env
中可选给出的 fetch()
参数中提取命名空间绑定。所以:
export default {
async fetch(request, env) {
...
const secret = await env.sonarkv.get("somekey");
...
}