Nextjs 在 windows 上的部分打包及部署问题

最近在 windows 服务器上用 pm2 部署 Nextjs 项目时遇到了一些错误,遂水一下文章。

以下均为 standalone 模式下构建所遇到的问题,export 下未知

此问题详见 Nextjs Discussion

解决方案 1:使用其他包管理工具 npm yarn bun 等(纯扯淡)

解决方案 2:开启开发者模式

  • win10 设置 -> 更新和安全 -> 开发者选项 -> 开启开发人员模式(因电脑而异)
  • win11 系统 -> 开发人员模式(因电脑而异)

打包构建后的静态资源(css public 资源)访问 404

参考 Nextjs 文档

原因是打包的 .next 不包含静态资源(css、public 下的资源)

Nextjs 官方认为这些应该放在 CDN 上,但是可以手动复制到 .next 对应文件夹下

Mac 系统命令如下:

cp -r public .next/standalone/ && cp -r .next/static .next/standalone/.next/

Windows 上此处使用 cpr 包实现,你也可以用 node 自己实现该操作,在 next build 后执行命令即可

cpr public .next/standalone/public && cpr .next/static .next/standalone/.next/static

写在 package.json 中如下所示:

    "build": "next build && npm run cp",
    "cp": "cpr public .next/standalone/public && cpr .next/static .next/standalone/.next/static",

值得注意的是:Mac 下的 cp -r 是将 source 目录拷贝到 destination 下,而 cpr 这个包是将 source 目录下的文件拷贝到 destination 下,两者行为有差异

使用 pnpm 经常在多次 build 后构建错误

写个 script 脚本,在执行 build 之前执行脚本,将旧的 .next 构建删除掉基本就不会出现这个问题了。

posted @ 2025-08-15 17:38  风希落  阅读(94)  评论(0)    收藏  举报