NextJS部署Plesk后静态文件无法访问:后缀出现undefined
核心问题定位
静态资源URL后缀被追加undefined(如.cssundefined、.jsundefined),手动移除后可正常访问,说明是路径拼接时引入了未定义的变量,且问题出在部署后的服务器环境,本地无异常大概率是本地环境变量或代码逻辑在服务器端未正确生效。
排查与解决步骤
优先检查布局文件的资源引用
因为仅修改了布局文件,重点排查布局组件中所有动态生成资源路径的代码。比如是否存在类似${resourcePath}${undefinedVar}的写法,或是使用了未初始化的状态/变量拼接URL。确保所有参与路径拼接的变量都有明确赋值。重新部署完整构建产物
即使本地next build正常,推送服务器时可能出现文件传输不完整或损坏。重新执行next build,将.next和public目录完整覆盖到Plesk部署目录,同时确认文件权限设置正确(静态文件需具备可读权限)。校验Next.js配置文件
检查next.config.js中的assetPrefix配置,确认未使用未定义的环境变量或变量值。比如避免assetPrefix: process.env.UNDEFINED_VAR这类写法,一旦变量未定义会直接导致资源路径异常。清除服务器缓存
Plesk自带的缓存或第三方CDN可能缓存了旧的错误路径,尝试清除服务器端缓存后重启Next.js服务,确保加载最新的构建产物路径。检查部署脚本的环境变量
如果使用自动化部署脚本,确认部署过程中传递的所有环境变量都已正确定义,没有遗漏必要的变量导致路径拼接时引入undefined。
内容的提问来源于stack exchange,提问作者Lalit Fauzdar

