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

部署Node.js应用到Heroku后访问提示Method Not Allowed错误

问题现象
  • 参照Heroku官方文档指引部署Node.js应用,依次执行heroku create、git push heroku master命令后终端无报错
  • 访问Heroku为应用分配的访问链接时,页面返回Method Not Allowed错误

贴出的项目核心代码如下:

const express = require("express");
const bodyParser = require("body-parser");
const date = require(__dirname + "/date.js");
const mongoose = require('mongoose');
const _ = require('lodash');
const app = express();
const PORT = process.env.PORT || 5000;
app.set('view engine', 'ejs');
mongoose.connect('mongodb+srv://37888:commoncold@3788-j.1lyrm.mongodb.net/todolistDB');
app.use(bodyParser.urlencoded({extended: true}));
app.use(express.static("public"));
/* some code here*/
app.listen(PORT, function() {
  console.log("Server started on port ${PORT}");
});
问题根因与修复步骤

返回405 Method Not Allowed的核心原因是服务端没有匹配到浏览器访问首页时发出的GET /请求对应的处理逻辑,按以下步骤排查修复即可:

  • 补全根路径GET路由
    你贴出的代码在静态资源配置和端口监听之间省略了路由逻辑,这部分大概率缺了根路径的GET方法处理:浏览器访问站点默认发GET请求,如果代码里只定义了根路径的POST路由、或者完全没写根路径路由,就会直接返回405错误。把对应路由补到app.use(express.static("public"));之后、app.listen()之前即可,参考示例:
    app.get('/', (req, res) => {
      const currentDay = date.getDate();
      // 替换成你自己的业务逻辑,比如查询todo数据、渲染ejs模板
      Item.find({}, (err, todoItems) => {
        if (!err) {
          res.render('list', { day: currentDay, listItems: todoItems });
        }
      })
    })
    
  • 修复现有代码的语法问题
    你写的启动日志用了模板字符串语法,但外层用了双引号,变量不会被正确解析,改成反引号即可:
    app.listen(PORT, function() {
      console.log(`Server started on port ${PORT}`);
    });
    
    这个问题不会直接触发405,但会导致你查Heroku运行日志时看不到正确的启动提示,干扰后续排查。
  • 确认Heroku启动配置正确
    检查项目根目录的package.json文件,必须配置start启动脚本,Heroku部署完成后会靠这个脚本启动你的服务,示例配置(如果你的入口文件是app.js就用这个,是index.js就对应替换文件名):
    {
      "scripts": {
        "start": "node app.js"
      }
    }
    
  • 部署验证
    所有修改完成后,提交代码到本地git仓库,重新执行git push heroku master完成部署。部署完成后先执行heroku logs --tail查看实时运行日志,确认服务正常启动后再访问分配的域名测试即可。

重要提醒:你贴出的代码里硬编码了MongoDB数据库的明文账号密码,立刻去MongoDB控制台重置该账号密码,后续把数据库连接串配置到Heroku的环境变量中读取,不要把敏感信息硬编码在代码里提交,避免数据库被未授权访问。

内容的提问来源于stack exchange,提问作者Baba-J

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 11:06:20