记一次Cloudflare部署nextjs错误排查过程

起因

这几天上了新网站,前一天还使用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官方的教程搞的,正常不应该出问题。况且前一天还好好的,结果今天只是新加了一个图标文件就不行,很是奇怪。

  1. 回退版本,删除favicon.ico,删除.vercel.nextnode_modules一众文件夹,重新打包,仍然报错;
  2. 修改node版本,升级npm,pnpm,重新打包,仍然报错;
  3. 问Claude,Claude说是wranger.toml配置文件问题,按Claude说的改,还是报错,且Claude给的配置文件内容还是旧版本的配置,继续追问,开始瞎编答案;
  4. 尝试用cursor,windsurf改,跟Claude的思路差不多,改了一堆文件,加了一堆文件,越改越离谱,最后报错都变了,AI这条路彻底走不通了;
  5. 在1024群里问,结果没人回应;
  6. 开始在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。

留下评论

您的电子邮箱地址不会被公开。 必填项已用*标注