上传Cloudflare Worker时遭遇错误码10021问题求助
解决Cloudflare Worker部署时的10021错误(Uncaught异常)
我之前也踩过这个坑,这个错误本质是你的Worker脚本在Cloudflare的运行环境里触发了未被捕获的异常,导致部署失败。下面是我亲测有效的排查和修复方向:
1. 先本地模拟环境调试,精准定位错误
直接上传排查太浪费时间,建议用Cloudflare官方的wrangler工具在本地模拟Worker环境,它会输出具体的异常栈信息:
- 先安装Wrangler:
npm install -g wrangler - 到项目根目录执行:
wrangler dev dist/index.js - 控制台会明确告诉你哪里出了问题——比如是某个变量未定义、语法错误,或者用了Worker环境不支持的Node.js专属API(比如
fs模块)
2. 检查Webpack打包配置和产物
因为你用Webpack打包成单文件,很可能是打包环节出了问题:
- 避免打包Node.js专属模块:Cloudflare Worker是基于V8的无服务器环境,不支持Node.js核心模块(
fs/path这类)。如果你的代码里引入了这些,Webpack会把它们打包进去,直接导致运行报错。赶紧替换成Web标准API(比如用fetch代替Node.js的http模块)。 - 设置正确的打包目标:在
webpack.config.js里把目标环境设为webworker,确保Webpack只打包Worker兼容的代码:module.exports = { target: 'webworker', // 其他原有配置... };
3. 用极简代码做测试验证
如果本地调试还是没头绪,试试“排除法”:
- 先写一个最基础的Worker脚本替换
dist/index.js:addEventListener('fetch', event => { event.respondWith(new Response('Hello World!')); }); - 再执行你原来的curl命令上传。如果这次能成功部署,说明问题肯定在你原来的业务代码里,再逐步添加代码片段,直到触发错误,就能精准定位问题点。
4. 最后检查API请求的细节
- 确认
@dist/index.js的路径正确:curl里的相对路径是相对于你执行命令的目录的,要是dist不在当前目录,得写绝对路径。 - 核对ZONE_ID、邮箱、API密钥是否正确——虽然这个错误主要是脚本问题,但也不排除权限异常导致的隐性报错(不过这种情况错误码一般不是10021)。
内容的提问来源于stack exchange,提问作者martosoler




