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

cPanel部署Node.js仅默认路由可用,其他路由报500错误

解决cPanel部署Node.js后仅根路由可用的问题

以下是针对你遇到的仅根路由正常、其他路由返回500错误的排查步骤:

1. 核对cPanel Node.js应用配置

  • 登录cPanel,找到Node.js管理器,检查你的应用:
    • 应用根目录:必须指向你的项目根文件夹(比如代码放在public_html/my-node-app,就填这个路径)
    • 启动文件:确认是你项目的入口文件(比如app.js或server.js,要和实际文件名一致)
    • 修改后记得点击Restart App生效

2. 检查路由挂载与中间件

  • 确保所有路由都在Express实例初始化、必要中间件(如express.json()、cors)之后挂载,比如:
    const express = require('express');
    const app = express();
    
    // 先加载中间件
    app.use(express.json());
    app.use(cors());
    
    // 再挂载路由
    app.get('/', (req, res) => res.send('Home'));
    app.get('/check', (req, res) => res.send('Check'));
    const authRouter = require('./routes/auth');
    app.use('/api/auth', authRouter);
    
  • 临时添加全局错误处理中间件,捕获具体错误信息(方便排查):
    // 放在所有路由之后
    app.use((err, req, res, next) => {
      console.error(err.stack);
      res.status(500).send(`具体错误:${err.message}`);
    });
    
  • 检查带/api前缀的路由是否正确使用express.Router():
    比如routes/auth.js里应该写:
    const router = require('express').Router();
    router.get('/', (req, res) => { /* 逻辑 */ }); // 对应/api/auth路径
    module.exports = router;
    
    不要在路由文件里重复写/api/auth前缀

3. 修正文件权限

  • 进入cPanel的文件管理器,找到你的项目文件夹:
    • 文件夹权限设为755,文件权限设为644(选中文件/文件夹后点击顶部的权限修改)
    • 重点检查routes目录下的文件,确保Node.js进程能读取到这些文件

4. 验证Passenger与.htaccess配置

  • 如果你的应用在子目录,检查根目录的.htaccess文件(cPanel Node.js工具会自动生成,但若手动修改过可能出错),正确配置示例:
    PassengerNodejs /home/你的用户名/nodejs/bin/node
    PassengerAppRoot /home/你的用户名/public_html/你的项目文件夹
    PassengerStartupFile app.js
    PassengerAppType node
    
  • 若存在自定义的URL重写规则,确保没有和你的Node.js路由冲突

5. 重新安装依赖

  • 打开cPanel的终端,切换到项目根目录,运行:
    npm install
    
  • 不要直接上传本地的node_modules文件夹,不同环境的依赖可能存在兼容问题
  • 确认package.json里有正确的start脚本:
    "scripts": {
      "start": "node app.js"
    }
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 11:25:19