无需cPanel能否上传Next.js 14应用至Siteground?next-intl导出受阻
可行的Next.js + next-intl 部署到Siteground的方案
由于next-intl依赖Next.js的运行时(SSR/SSG/ISR)能力,无法通过next export生成纯静态文件,因此需要采用运行时部署方案,以下是适配Siteground的具体操作路径:
方案一:Node.js 应用直接部署(推荐)
Siteground的GoGeek、Cloud等主机计划支持Node.js应用托管,操作步骤如下:
- 本地完成项目构建:运行
npm run build,生成.next目录 - 上传项目文件:通过FTP或Siteground文件管理器,将项目根目录下所有文件(排除
node_modules)上传至主机网站根目录(如public_html) - 配置Node.js应用:
- 登录Siteground的cPanel,找到「Node.js Manager」工具
- 创建新应用,配置参数:
- 应用根目录:选择上传项目的对应路径
- Node.js版本:选择与本地开发一致的版本(建议18+,匹配Next.js 13/14要求)
- 启动命令:输入
npx next start(Next.js默认启动命令)
- 保存配置后,Siteground会自动配置反向代理,将域名指向Node应用端口
- 安装生产依赖:在cPanel的「Terminal」中切换到项目目录,运行
npm install --production
方案二:自定义服务器部署(适配特殊场景)
如果默认next start无法满足自定义需求(如端口调整、额外中间件),可使用自定义服务器:
- 在项目根目录创建
server.js,示例代码:
const { createServer } = require('http'); const { parse } = require('url'); const next = require('next'); const dev = process.env.NODE_ENV !== 'production'; const app = next({ dev }); const handle = app.getRequestHandler(); app.prepare().then(() => { createServer((req, res) => { const parsedUrl = parse(req.url, true); handle(req, res, parsedUrl); }).listen(3000, (err) => { if (err) throw err; console.log('> Ready on http://localhost:3000'); }); });
- 修改
package.json的start脚本:"start": "node server.js" - 后续流程同方案一,启动命令改为
npm start
注意事项
- 确认你的Siteground主机计划支持Node.js应用托管(StartUp计划可能无此权限)
- 若遇版本兼容问题,可在cPanel的Node.js Manager中切换Node版本
- 部署后可通过Siteground日志工具查看应用运行状态,排查启动错误
内容的提问来源于stack exchange,提问作者wellintone
相关产品推荐
相关产品推荐

