对我的Node.js服务器的POST请求在生产中返回404

时间:2017-08-25 04:10:29

标签: javascript node.js heroku axios

我正在通过Axios向我的节点服务器发出 echo "abcdefhijklmnopqrstuvwxyzoo" | sed -r 's/[^o]/_/g' API请求,以便将POST值发送到我的MongoDB中。

以下代码在string本地运行良好,但只要我将代码推送到Heroku,请求就会开始返回localhost:8080。我的节点服务器在404上运行,我在其Express框架上配置了CORS。

以下是我向节点服务器发出https请求时收到的输出:

  

POST https://www.mynodeserverurl.com/api/upload-csv 404(未找到)

这是我处理此API请求的Node服务器的代码。

NodeServer / app.js

POST

NodeServer /路由/ API / api.js

// Add headers so we can make API requests
app.use(function (req, res, next) {
  res.setHeader('Access-Control-Allow-Origin', '*');
  res.setHeader('Access-Control-Allow-Methods', 'GET, POST, OPTIONS, PUT, PATCH, DELETE');
  res.setHeader('Access-Control-Allow-Headers', 'X-Requested-With,content-type');
  res.setHeader('Access-Control-Allow-Credentials', true);
  // intercept OPTIONS method
  if ('OPTIONS' == req.method) {
    res.sendStatus(200);
  } else {
    next();
  }
});

向上述路由发出router.post('/upload-csv/', (req, res) => { let csv = req.body.csv_string.split('$'); let csv_name = csv[0]; let csv_string = csv_name+csv[1]; CSVStore.findOne({url: csv_name}) .then((csv) => { console.log('IN POST REQUEST'); console.log(csv_string); return res.status(204).json({msg: 'All good!'}); }) .catch((err) => { console.log('There was an error!', err); }); }); 请求甚至不会在节点服务器控制台中显示POST个结果。

以下是我向NodeServer发出console.log()请求的webapp代码

POST

我发出axios.post(`${utils.fetchURL()}/upload-csv`, { csv_string: csv_string }) .then(function(response) { console.log('Response', response); return {}; }) .catch(function(error) { console.log('There was an error!', error); return {}; }); 请求的网址是正确的,POST不是空的;它有数据。

我需要在我的NodeServer csv_string中进行某种配置以允许app.js上的CORS吗?

更新:我可以确认https请求有效。我可以发出GET请求从MongoDB中检索GET。为什么string有效且GET没有?

1 个答案:

答案 0 :(得分:0)

我遇到了同样的问题。我所有的API端点都可以在本地和产品中使用,但是我的一个POST端点可以在生产中使用404,但可以用于GET。

事实证明,在运行“ git push heroku master”之前,我忘记了暂存并提交我的最新更改。一旦执行完此操作并再次运行“ git push heroku master”,所有内容均已发布并可以在生产环境中使用。

因此,如果您遇到此问题,请尝试