Next.js生产服务器(Nginx)出现net::ERR_ABORTED 404静态资源错误
问题描述
本地构建部署Next.js应用完全正常,无任何错误,但部署到生产服务器(使用Nginx)后,页面HTML及内容可正常显示,/_next/static/下的所有静态文件均返回net::ERR_ABORTED 404错误,CSS、构建清单等资源无法加载。
已完成排查动作:
- 移除动态路由与Link组件,问题仍存在
- 调整Nginx配置(将/代理到8082端口,/_next/static/指向/var/www/website/.next/static/),同服务器另一站点使用相同配置可正常运行,排除Nginx配置问题
- 将正常站点部署到当前目录也可正常运行,排除服务器目录权限问题
- 移除处理音频文件的url-loader和next.config.js,将音频文件移至public目录,问题仍未解决
- 当前应用依赖与正常站点一致
请问代码中哪些部分可能导致构建路径异常?
可能的代码层面原因
- 自定义路径配置残留:如果曾在
next.config.js中设置过assetPrefix、basePath这类路径前缀配置,即便删除了配置文件,构建缓存或残留文件可能仍会影响资源路径输出。可以对比当前应用和正常站点构建后的.next/static目录结构,查看资源文件的引用前缀是否一致。 - 硬编码的静态资源路径:检查代码中是否存在手动写死的
/_next/static/相关绝对路径,比如在组件内联样式、全局CSS、自定义脚本中直接指定资源URL,这类硬编码可能因生产环境的部署路径差异导致资源找不到。 - 动态生成资源URL的逻辑错误:如果代码中通过环境变量(如
process.env.NEXT_PUBLIC_BASE_PATH)拼接静态资源路径,需确认生产环境的环境变量值与本地一致,变量配置错误会导致资源路径前缀异常。 - 第三方依赖的路径处理问题:排查引入的第三方组件库是否存在自定义静态资源路径的逻辑,部分UI库或工具会在构建时修改资源输出路径,导致与Next.js默认的
/_next/static/路径不匹配。 - 构建脚本或命令差异:对比本地和生产环境的构建命令,确认是否存在额外参数(如
--experimental-app、自定义构建脚本),不同的构建参数可能导致静态资源的输出路径或结构变化。 - Webpack配置缓存残留:即便删除了
next.config.js,之前自定义的Webpack配置(如url-loader、file-loader的规则)可能在node_modules或构建缓存中残留。建议删除.next目录和node_modules,重新安装依赖后再执行构建。
内容的提问来源于stack exchange,提问作者ace47
相关产品推荐
相关产品推荐

