起因
这几天上了新网站,前一天还使用cloudflare部署还好好的,结果今天想要给网站加个favicon.ico,重新执行部署命令,直接出现如下报错。
✘ [ERROR] Could not resolve "async_hooks"
<stdin>:81:680:
81 │ ...orts,{default:()=>N});var R=A(require("async_hooks")),S="@next/request-context",f=Symbol....
╵ ~~~~~~~~~~~~~
The package "async_hooks" wasn't found on the file system but is built into node. Are you trying
to bundle for node? You can use "platform: 'node'" to do that, which will remove this error.
⚡️ Unexpected error: Build failed with 1 error:
⚡️ <stdin>:81:680: ERROR: Could not resolve "async_hooks"
ELIFECYCLE Command failed with exit code 1.
✘ [ERROR] Could not resolve "async_hooks"
<stdin>:109:680:
109 │ ...orts,{default:()=>N});var R=A(require("async_hooks")),S="@next/request-context",f=Symbol...
╵ ~~~~~~~~~~~~~
The package "async_hooks" wasn't found on the file system but is built into node. Are you trying
to bundle for node? You can use "platform: 'node'" to do that, which will remove this error.
排查
我是按照CF官方的教程搞的,正常不应该出问题。况且前一天还好好的,结果今天只是新加了一个图标文件就不行,很是奇怪。
- 回退版本,删除favicon.ico,删除
.vercel
,.next
,node_modules
一众文件夹,重新打包,仍然报错; - 修改node版本,升级npm,pnpm,重新打包,仍然报错;
- 问Claude,Claude说是wranger.toml配置文件问题,按Claude说的改,还是报错,且Claude给的配置文件内容还是旧版本的配置,继续追问,开始瞎编答案;
- 尝试用cursor,windsurf改,跟Claude的思路差不多,改了一堆文件,加了一堆文件,越改越离谱,最后报错都变了,AI这条路彻底走不通了;
- 在1024群里问,结果没人回应;
- 开始在Cloudflare官方论坛上搜索相关报错关键字,发现有个老哥也出现了同样的问题,我是上午8点多发现的问题,这个老哥上午11点的帖子[https://community.cloudflare.com/t/could-not-resolve-async-hooks/741456/5],在后面跟帖,并附上错误,后面开始有不少老哥开始跟帖,下午四点多,官方的跟帖,说是有一个 Vercel/Next.js 更新破坏了这个问题,并附上Github issue地址[https://github.com/cloudflare/next-on-pages/issues/908#issuecomment-2502658653],根据官方指引,解决问题。
原因与方案
由于vercel今天升级了版本,导致不兼容@cloudflare/next-on-pages,临时解决方案是回滚vercel
并固定并覆盖它到39.1.1
。
修改package.json
{
"devDependencies": {
"vercel": "39.1.1"
},
"overrides": {
"vercel": "$vercel"
}
}
然后删除.vercel
,.next
一众文件夹,重新打包。
总结
现在已经很少有AI解决不了的问题了,今天我遇到的这个算一个,因为这个问题太新了,新到今天才出现问题,才有解决方案。所以下次遇到AI解决不了的诡异问题,如环境没变,代码没变,但是编译就是报错,还是到官方论坛或者Github上找答案吧,这种情况AI只能越改越错,说到底还是要跟着sense写代码的,跟着sense改bug。