You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Next.js应用在cPanel共享主机部署报错及访问问题求助

解决cPanel共享主机部署Next.js应用的三类问题

问题1:WebAssembly内存不足错误(cPanel终端执行npm run start时)

错误日志:

> next-simple@0.1.0 dev
> node server.js

undefined:9898
      return await WebAssembly.instantiate(mod, {
                               ^

RangeError: WebAssembly.instantiate(): Out of memory: wasm memory
    at lazyllhttp (eval at requireWithFakeGlobalScope (/home/toirihoi/nodevenv/nextapp/18/lib/node_modules/next/dist/compiled/@edge-runtime/primitives/load.js:64:3), <anonymous>:9898:32)

Node.js v18.16.1

解决方法:

  • 禁止在cPanel终端直接运行npm run start,共享主机终端资源受限,Next.js开发模式启动会占用大量内存。
  • 改用cPanel自带的Node.js应用管理器启动应用,它会自动分配适配的资源并管理进程。
  • 提前在本地或SSH环境执行npm run build完成生产构建,再将文件上传到cPanel,避免在资源受限环境做构建操作。

问题2:端口占用错误(SSH执行npm start时)

错误日志:

[nextapp (18)] [toirihoi@server3 nextapp]$ npm start

> next-simple@0.1.0 start
> NODE_ENV=production node server.js

Error: listen EADDRINUSE: address already in use :::3000
    at Server.setupListenHandle [as _listen2] (node:net:1740:16)
    at listenInCluster (node:net:1788:12)
    at Server.listen (node:net:1876:7)
    at /home/toirihoi/nextapp/server.js:37:10
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5) {
  code: 'EADDRINUSE',
  errno: -98,
  syscall: 'listen',
  address: '::',
  port: 3000
}

解决方法:

  • 共享主机3000端口大概率被其他应用占用,不要硬编码端口,直接使用cPanel分配的环境变量端口,修改server.js:
    // 移除硬编码的3000,直接读取环境变量
    const port = process.env.PORT
    
  • 不要通过SSH手动启动npm start,cPanel的Node.js管理器会自动分配可用端口,并通过Passenger反向代理到你的域名,手动启动的应用无法通过外部域名访问。

问题3:端口改3001启动成功但浏览器404

错误日志:

[nextapp (18)] [toirihoi@server3 nextapp]$ npm start

> next-simple@0.1.0 start
> NODE_ENV=production node server.js

> Ready on http://localhost:3001
http://localhost:3001

解决方法:

  • 共享主机的本地端口(如3001)无法直接通过外部浏览器访问,必须依赖cPanel的Passenger代理转发。
  • 正确操作步骤:
    1. 在cPanel的Node.js应用管理器中,确认应用根目录指向nextapp文件夹,启动文件设为server.js。
    2. 在本地或SSH环境执行npm run build完成生产构建。
    3. 在Node.js管理器中点击启动或重启按钮,不要手动通过SSH启动。
    4. 访问你的绑定域名(而非localhost:3001),Passenger会自动将请求转发到应用端口。
  • 额外检查:确认.htaccess中的PassengerAppRoot和PassengerStartupFile路径与实际文件路径一致。

额外优化建议

  • 修改package.json的start脚本,去掉硬编码的NODE_ENV=production,cPanel的Node.js管理器会自动设置生产环境变量:
    "scripts": {
      "dev": "node server.js",
      "build": "next build",
      "start": "node server.js",
      "export": "next build && next export",
      "lint": "next lint"
    }
    
  • 若应用无需自定义路由逻辑,建议直接使用Next.js默认输出方式,减少自定义server带来的配置复杂度,更适配共享主机环境。

内容的提问来源于stack exchange,提问作者MHIS

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 03:27:04