如何在Cloudflare Worker脚本中正确使用ES6 exports语法?
你遇到的报错是因为两段代码对应Cloudflare Workers的两种不同编写规范:第一段是传统Service Worker格式,依靠addEventListener注册事件触发运行;第二段是更新的Module Worker格式,通过ES模块默认导出的对象定义事件处理逻辑,你使用的旧模板默认不支持Module Worker语法,所以直接替换代码会触发找不到事件处理器的报错。
你可以选择以下任意一种方案解决问题:
方法1:保留新的示例代码,修改配置适配Module Worker模式
- 打开项目根目录的
wrangler.toml配置文件,添加如下配置项:
type = "module" compatibility_date = "2023-01-01"
- 确认你的worker JS文件内容就是那段
export default的示例代码,直接执行wrangler publish即可正常部署。
方法2:不修改配置,把示例逻辑整合到原有代码中
不需要替换全部原有代码,只需要把原有handleRequest函数里的返回逻辑替换成示例里返回HTML的逻辑即可,整合后完整代码如下:
addEventListener('fetch', event => { event.respondWith(handleRequest(event.request)) }) async function handleRequest(request) { const html = `<!DOCTYPE html> <body> <h1>Hello World</h1> <p>This markup was generated by a Cloudflare Worker.</p> </body> `; return new Response(html, { headers: { "content-type": "text/html;charset=UTF-8", }, }); }
修改完直接执行wrangler publish即可正常部署。
内容的提问来源于stack exchange,提问作者Wintermute
相关产品推荐
相关产品推荐

