tza*_*dor 3 cloudflare serverless-framework serverless serverless-plugins cloudflare-workers
我设法根据https://serverless.com/framework/docs/providers/cloudflare/guide/使用无服务器框架部署了我的第一个 cloudflare 工作器, 并且当我到达云端时它正在工作。
在开发过程中,希望能够在http://localhost:8080/ *上进行测试
使用 serverless.yml 中指定的函数启动本地 http 服务器并处理我的请求的最简单方法是什么?
我查看了https://github.com/serverless/examples/tree/master/google-node-simple-http-endpoint 但没有“开始”脚本。
https://github.com/serverless/上似乎没有关于 cloudflare 的例子
目前,没有办法在本地运行真正的 Cloudflare Workers 运行时。Workers 团队知道开发人员需要这个,但需要做一些工作才能将核心 Workers 运行时与 Cloudflare 软件堆栈的其余部分分开,否则会过于复杂而无法在本地运行。
同时,您可以尝试以下几个选项:
Cloudworker是 Cloudflare Workers 的模拟器,它在 node.js 之上本地运行。它是由 Dollar Shave Club 的工程师构建的,该公司使用 Workers,而不是 Cloudflare。由于它是 Workers 环境的完整独立实现,因此它的行为方式与“真实事物”之间可能存在细微差异。但是,它足以完成一些工作。
可以通过 API 访问在cloudflareworkers.com 上看到的预览。使用一些curl命令,您可以将代码上传到 cloudflareworkers.com 并对其运行测试。这不是真正的“本地”,但如果您始终连接到互联网,则几乎相同。您不需要任何特殊凭据即可使用此 API,因此您可以编写一些脚本来使用它来运行单元测试等。
上传一个worker.js通过POSTing调用的脚本到https://cloudflareworkers.com/script:
SCRIPT_ID=$(curl -sX POST https://cloudflareworkers.com/script \
-H "Content-Type: text/javascript" --data-binary @worker.js | \
jq -r .id)
Run Code Online (Sandbox Code Playgroud)
现在$SCRIPT_ID将是一个 32 位的十六进制数字,用于标识您的脚本。请注意,ID 基于散列,因此如果您两次上传完全相同的脚本,您将获得相同的 ID。
接下来,生成一个随机会话 ID(32 个十六进制数字):
SESSION_ID=$(head -c 16 /dev/urandom | xxd -p)
Run Code Online (Sandbox Code Playgroud)
重要的是,这个会话 ID 是加密随机的,因为任何拥有该 ID 的人都可以将 devtools 连接到您的预览并对其进行调试。
我们还定义了两部分配置:
PREVIEW_HOST=example.com
HTTPS=1
Run Code Online (Sandbox Code Playgroud)
这些指定当您的工作程序运行时,预览应该像在 上运行一样https://example.com。Host传入请求的 URL 和标头将被重写为此协议和主机名。设置HTTPS=1URL 是否应该是 HTTPS,否则HTTPS=0。
现在您可以向您的工作人员发送请求,例如:
curl https://00000000000000000000000000000000.cloudflareworkers.com \
-H "Cookie: __ew_fiddle_preview=$SCRIPT_ID$SESSION_ID$HTTPS$PREVIEW_HOST"
Run Code Online (Sandbox Code Playgroud)
(这 32 个零可以是任何十六进制数字。在浏览器中使用预览时,这些是随机生成的,以防止 cookie 和缓存内容跨会话干扰。但是,在使用 curl 时,这无关紧要,所以全零很好。)
您可以更改此curl行以在 URL 中包含路径、使用不同的方法(如-X POST)、添加标头等。只要主机名和 cookie 如所示,它就会转到您的预览工作器。
最后,您可以连接 devtools 控制台以在 Chrome 中进行调试(不幸的是,目前仅适用于 Chrome):
google-chrome https://cloudflareworkers.com/devtools/inspector.html?wss=cloudflareworkers.com/inspect/$SESSION_ID&v8only=true
Run Code Online (Sandbox Code Playgroud)
请注意,上述 API 目前尚未正式记录,将来可能会发生变化,但通过cloudflareworkers.com在浏览器中打开并查看其发出的请求,应该相对容易地找出变化。
| 归档时间: |
|
| 查看次数: |
1683 次 |
| 最近记录: |