【问题标题】:Heroku CANNOT /GETHeroku 无法/获取
【发布时间】:2017-03-30 09:50:07
【问题描述】:

我正在尝试将我的 Node.js Api 部署到 Heroku,但是在我部署它之后,我在 APPNAME.herokuapp.com 上得到了 Cannot GET /

这是我的app.js 文件。

var express = require('express');
var app = express();
var bodyParser = require('body-parser');
var mongoose = require('mongoose');

app.use(bodyParser.json());
app.use(bodyParser.urlencoded({extended:true}));
app.use(express.static(__dirname + '/public'));


app.use('/api', require('./routes/api'));

var server = app.listen(process.env.PORT || 3000, function() {
    var port = server.address().port;
    console.log("Hello World");
});

当我使用端口 3000 时,这在本地工作,但我觉得问题可能与未配置用于生产的端口有关。

有人知道我做错了什么吗?任何帮助将不胜感激!

【问题讨论】:

  • process.env.PORT 的值是多少?你试过APPNAME.herokuapp.com:3000吗?
  • herokuapp.com:3000 不起作用!我应该设置什么而不是 process.env.PORT?
  • 您似乎没有 / 的设置路线。您拥有的所有路线都以/api 开头,因此请尝试 appname.heroku.com/api
  • 消息 Cannot GET / 实际上是来自 express 的消息,因此您的应用可以正常工作,只是没有为 / 定义路由
  • 或者如果没有定义process.env.PORT,试试appname.heroku.com:3000/api

标签: node.js heroku


【解决方案1】:

在 server.js 中添加这两行对我有用:

var distDir = __dirname + "/dist/"; app.use(express.static(distDir));

我的dist结构如下:

【讨论】:

    【解决方案2】:

    你需要有一个索引路由app.get("/"). Heroku 将寻找要显示的索引路由,一旦找不到,它将显示错误消息Cannot Get /.,这意味着它无法获取索引路由"/"。在您的代码中,您似乎有app.use('/api', require('./routes/api'));。我假设您打算将此作为您的索引页面,但这不是它的工作方式。索引页只是仰泳"/"

    【讨论】:

      【解决方案3】:

      Heroku 需要在加载您的应用时寻找索引路由。这对我有用,我想它也对你有用。

      app.get('/', (req, res, next) => {
      
          res.status(200).json({
              status: 'success',
              data: {
                  name: 'name of your app',
                  version: '0.1.0'
              }
          });
      
      });
      

      【讨论】:

        猜你喜欢
        • 2014-08-25
        • 2021-12-18
        • 2020-05-25
        • 2021-03-30
        • 2023-03-31
        • 2021-10-14
        • 2023-03-20
        • 2013-06-25
        • 2020-07-27
        相关资源
        最近更新 更多