如何将Next.js应用部署到Cpanel?部署失败问题排查求助
Next.js 部署到Cpanel运行异常解决方案
以下是你操作中的核心问题及对应修复步骤:
- 启动命令配置错误
你当前的启动命令调用了server.js,如果没有手写自定义的Next.js服务文件,项目中不存在这个文件会直接导致启动失败。你可以把package.json中的start命令修改为:
注意端口必须填写Cpanel Node.js配置页分配的专属端口,不可自定义填写,否则服务无法被反向代理到公网。"start": "NODE_ENV=production node_modules/.bin/next start -p 你的Cpanel分配的Node应用端口" - 缺失必要的打包产物
打包后上传时要确认包含了.next文件夹,这是Next.js编译后的核心产物目录,漏传会导致服务启动后找不到页面资源。 - Cpanel Node应用配置错误
你当前站点直接展示文件夹结构,说明Web服务器没有把请求转发到Node服务,而是直接读取了站点根目录的静态文件:- 确认Node应用的根路径选择的是你上传Next.js项目的文件夹,不是默认的public_html目录
- 启动文件配置为
node_modules/.bin/next(如果使用自定义启动脚本则对应填写你的脚本路径,同时要确认脚本逻辑无异常) - 公共文件夹路径配置为项目的
public目录
- 反向代理规则缺失
在项目根目录的.htaccess文件中添加以下规则,将所有请求转发到Node服务端口:RewriteEngine On
RewriteRule ^$ http://127.0.0.1:你的Cpanel分配的Node应用端口/ [P,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ http://127.0.0.1:你的Cpanel分配的Node应用端口/$1 [P,L] - 关于npm警告的处理
该警告不影响服务正常运行,添加.npmrc配置后也可以直接通过node命令启动服务,避免npm调用的node路径不匹配问题:NODE_ENV=production node node_modules/.bin/next start -p 你的Cpanel分配的Node应用端口
额外注意:你使用的Node 14.17.3仅支持Next.js 12及以下版本,如果你的项目使用更高版本的Next.js,需要降级到12.x LTS版本后重新打包上传。
内容的提问来源于stack exchange,提问作者sabuhi
相关产品推荐
相关产品推荐

