ExpressJs帖子不适用于heroku

时间:2016-02-02 02:09:23

标签: node.js express heroku

我遇到了以下问题。

当我开发我的expressjs路由时,在localhost上我的代码完美无缺。在postman上我也取得了成功,也在我的webapp上。

但是相同的代码不适用于heroku。 我总是在路线上得到404。

我做了一些测试,我发现问题出现在app.post路线上。

当我使用app.get时,代码可以在localhost和heroku上运行,但是使用app.post只能在localhost中工作而不能在heroku上工作,我有404。

我的节点版本和expressjs版本在两者上都是相同的。这被检查了。

var express     = require('express');
var app         = express();

var cors        = require('cors');
var bodyParser  = require('body-parser');
var morgan      = require('morgan');
var mongoose    = require('mongoose');
var config      = require('./config'); // get our config file

var port = process.env.PORT || 3333;
mongoose.connect(config.database);

app.use(bodyParser.urlencoded({ extended: false }));
app.use(bodyParser.json());
app.use(morgan('dev'));
app.use(cors());

app.use(function(req, res, next) {
  res.header("Access-Control-Allow-Origin", "*");
  res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
  next();
});

app.post('/a', function(req, res) {
  res.json({ message: 'hooray! welcome to our api!' });  
});


app.listen(port);

来自heroku日志的消息

 at=info method=GET path="/a" host=nx-admin-api.herokuapp.com request_id=60a9fefc-92f1-48fc-a4c8-740e4d61bcd7 fwd="201.53.63.230" dyno=web.1 connect=4ms service=43ms status=404 bytes=322
2016-02-02T02:07:29.306917+00:00 app[web.1]: GET /a 404 46.719 ms - 14

1 个答案:

答案 0 :(得分:0)

您应该使用CORS模块。像这样;

    ...
    app.use(bodyParser.json());
    app.use(cors());
    ...