You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用wrangler dev运行含itty-router的Cloudflare Worker时出现write EPIPE错误

Ubuntu 22.04下使用wrangler dev运行含itty-router的Cloudflare Worker时出现write EPIPE错误

问题描述

在Ubuntu 22.04系统上,使用wrangler dev(运行npm start时也出现相同问题)本地测试Cloudflare Worker,持续触发write EPIPE错误。运行基础的hello world Worker脚本无异常,但导入itty-router后启动就报错。预期Worker能正常启动本地服务器,实际出现如下错误及代码情况,需确认这是操作失误还是需上报的bug(若为bug,应提交给哪个项目)。

错误信息

username@machine:~/worker$ wrangler dev
 ⛅️ wrangler 3.0.0
------------------
wrangler dev now uses local mode by default, powered by 🔥 Miniflare and 👷 workerd.
To run an edge preview session for your Worker, use wrangler dev --remote
Using vars defined in .dev.vars
Your worker has access to the following bindings:
- R2 Buckets:
  - R2_BUCKET: bucket
⎔ Starting local server...
[mf:wrn] The latest compatibility date supported by the installed Cloudflare Workers Runtime is "2023-05-12",
but you've requested "2023-05-18". Falling back to "2023-05-12"...
╭──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
│ [b] open a browser, [d] open Devtools, [l] turn off local mode, [c] clear console, [x] to exit                                           │
╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
/home/username/.nvm/versions/node/v20.1.0/lib/node_modules/wrangler/wrangler-dist/cli.js:30632
            throw a;
            ^

Error: write EPIPE
    at afterWriteDispatched (node:internal/stream_base_commons:160:15)
    at writeGeneric (node:internal/stream_base_commons:151:3)
    at Socket._writeGeneric (node:net:946:11)
    at Socket._write (node:net:958:8)
    at writeOrBuffer (node:internal/streams/writable:399:12)
    at _write (node:internal/streams/writable:340:10)
    at Writable.write (node:internal/streams/writable:344:10)
    at Runtime.updateConfig (/home/username/.nvm/versions/node/v20.1.0/lib/node_modules/wrangler/node_modules/miniflare/dist/src/index.js:5120:26)
    at async #assembleAndUpdateConfig (/home/username/.nvm/versions/node/v20.1.0/lib/node_modules/wrangler/node_modules/miniflare/dist/src/index.js:9130:23)
    at async #init (/home/username/.nvm/versions/node/v20.1.0/lib/node_modules/wrangler/node_modules/miniflare/dist/src/index.js:8894:5)
Emitted 'error' event on Socket instance at:
    at emitErrorNT (node:internal/streams/destroy:151:8)
    at emitErrorCloseNT (node:internal/streams/destroy:116:3)
    at process.processTicksAndRejections (node:internal/process/task_queues:82:21) {
  errno: -32,
  code: 'EPIPE',
  syscall: 'write'
}

Node.js v20.1.0

Worker代码

import { Router, RouterType, IRequest } from 'itty-router'

export interface Env {
    R2_BUCKET: R2Bucket;
}

const router: RouterType = Router();

const get_static = async (req: IRequest, env: Env): Promise<Response> => {
    const url = new URL(req.url);
    const key = url.pathname.slice(1);
    const object = await env.R2_BUCKET.get(key);
    if (object == null) {
        return new Response('404, not found!', { status: 404 });
    }
    const headers = new Headers();
    object.writeHttpMetadata(headers);
    headers.set('etag', object.etag);
    return new Response(object.body, { headers });
}

router.all('*', get_static);

export default {
    async fetch(request: Request, env: Env, ctx: ExecutionContext): Promise<Response> {
       return await router.handle(request, env, ctx);
    },
};

排查建议

  1. 降级Node.js版本:当前使用Node.js v20.1.0,wrangler 3.0.0对Node.js 20的适配可能不完善。切换到Node.js 18 LTS版本(长期支持版),兼容性更有保障。
  2. 升级wrangler:你使用的wrangler 3.0.0是早期版本,后续版本大概率修复了这类EPIPE错误。执行npm update -g wrangler升级到最新稳定版后重试。
  3. 调整兼容性日期:日志显示请求的2023-05-18兼容性日期不被当前Runtime支持,已自动回退。在wrangler.toml中显式设置compatibility_date = "2023-05-12",消除自动回退带来的潜在问题。
  4. 更换itty-router版本:尝试安装不同版本的itty-router(比如稳定版itty-router@3.0.1),排查是否是版本间的兼容性冲突导致问题。

关于bug上报

如果以上步骤都无法解决问题,这属于wrangler(内置Miniflare)与itty-router的兼容性bug,应提交给wrangler项目仓库。提交时需包含:

  • 系统环境(Ubuntu 22.04、Node.js版本、wrangler版本)
  • 可复现的完整代码
  • 完整的错误日志
  • 已尝试的排查操作

内容的提问来源于stack exchange,提问作者eyager

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 19:18:14