错误:使用 wrangler dev 使用 itty-router 运行 cloudflare worker 时写入 EPIPE

eya*_*ger 5 javascript routes node.js typescript cloudflare-workers

我正在尝试使用本地测试运行 cloudflare 工作程序wrangler dev(尽管我在运行时遇到同样的问题npm start),并且不断收到 EPIPE 错误。错误消息和代码如下。如果相关的话,我正在使用 Ubunutu 22.04。这是我应该报告的错误(如果是,向哪个项目报告?),还是我做错了什么?

\n

错误

\n
username@machine:~/worker$ wrangler dev\n \xe2\x9b\x85\xef\xb8\x8f wrangler 3.0.0\n------------------\nwrangler dev now uses local mode by default, powered by  Miniflare and  workerd.\nTo run an edge preview session for your Worker, use wrangler dev --remote\nUsing vars defined in .dev.vars\nYour worker has access to the following bindings:\n- R2 Buckets:\n  - R2_BUCKET: bucket\n\xe2\x8e\x94 Starting local server...\n[mf:wrn] The latest compatibility date supported by the installed Cloudflare Workers Runtime is "2023-05-12",\nbut you've requested "2023-05-18". Falling back to "2023-05-12"...\n\xe2\x95\xad\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x95\xae\n\xe2\x94\x82 [b] open a browser, [d] open Devtools, [l] turn off local mode, [c] clear console, [x] to exit                                           \xe2\x94\x82\n\xe2\x95\xb0\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x95\xaf\n/home/username/.nvm/versions/node/v20.1.0/lib/node_modules/wrangler/wrangler-dist/cli.js:30632\n            throw a;\n            ^\n\nError: write EPIPE\n    at afterWriteDispatched (node:internal/stream_base_commons:160:15)\n    at writeGeneric (node:internal/stream_base_commons:151:3)\n    at Socket._writeGeneric (node:net:946:11)\n    at Socket._write (node:net:958:8)\n    at writeOrBuffer (node:internal/streams/writable:399:12)\n    at _write (node:internal/streams/writable:340:10)\n    at Writable.write (node:internal/streams/writable:344:10)\n    at Runtime.updateConfig (/home/username/.nvm/versions/node/v20.1.0/lib/node_modules/wrangler/node_modules/miniflare/dist/src/index.js:5120:26)\n    at async #assembleAndUpdateConfig (/home/username/.nvm/versions/node/v20.1.0/lib/node_modules/wrangler/node_modules/miniflare/dist/src/index.js:9130:23)\n    at async #init (/home/username/.nvm/versions/node/v20.1.0/lib/node_modules/wrangler/node_modules/miniflare/dist/src/index.js:8894:5)\nEmitted 'error' event on Socket instance at:\n    at emitErrorNT (node:internal/streams/destroy:151:8)\n    at emitErrorCloseNT (node:internal/streams/destroy:116:3)\n    at process.processTicksAndRejections (node:internal/process/task_queues:82:21) {\n  errno: -32,\n  code: 'EPIPE',\n  syscall: 'write'\n}\n\nNode.js v20.1.0\n\n
Run Code Online (Sandbox Code Playgroud)\n

代码

\n
import { Router, RouterType, IRequest } from 'itty-router'\n\nexport interface Env {\n    R2_BUCKET: R2Bucket;\n}\n\nconst router: RouterType = Router();\n\nconst get_static = async (req: IRequest, env: Env): Promise<Response> => {\n    const url = new URL(req.url);\n    const key = url.pathname.slice(1);\n    const object = await env.R2_BUCKET.get(key);\n    if (object == null) {\n        return new Response('404, not found!', { status: 404 });\n    }\n    const headers = new Headers();\n    object.writeHttpMetadata(headers);\n    headers.set('etag', object.etag);\n    return new Response(object.body, { headers });\n}\n\nrouter.all('*', get_static);\n\nexport default {\n    async fetch(request: Request, env: Env, ctx: ExecutionContext): Promise<Response> {\n       return await router.handle(request, env, ctx);\n    },\n};\n
Run Code Online (Sandbox Code Playgroud)\n

运行 hello world 工作脚本时我没有收到错误,但是一旦我导入itty-router并尝试运行,就会发生错误。我希望工作人员能够正常运行本地服务器,但结果却出现了上面显示的错误。

\n

eya*_*ger 6

我的问题通过按照github issuesapt install libc++1中的建议安装 libc++1 得到解决。