node.js - Heroku + MERN 堆栈 - 任何值的 HTTP POST 请求无效
问题描述
我尝试将 HTTP POST 请求发送到我的 Mlab 数据库。
在开发中,一切都很好。但是在生产环境中,我的请求发送时没有任何值。
我使用 MongoDB + Express + Reactjs + Node - MERN 堆栈 - + Heroku PaaS。
此外,我在会议开始时收到了一条关于以下事实的消息:
Failed to register a ServiceWorker: A bad HTTP response code (404) was received when fetching the script
但我目前不再收到此消息:我已在每次重新加载时更新我的 serviceworker 并将我的 serviceworker.js 的副本移动到我的 HTML 文件夹中。
为什么我的 HTTP POST 请求在发送时仍然无效?
关于我的日志,我的服务人员和 file.map 似乎存在问题:
2018-05-24T18:25:39.795372+00:00 heroku[路由器]: at=info method=GET
path="/static/js/main.3685cd33.js.map" host=#.com
request_id=03674121-2fac -42ec-9459-e5fa17eb2ea7 fwd="93.27.27.184" dyno=web.1 connect=0ms service=7ms status=404 bytes=413 protocol=https 2018-05-24T18:25:41.576623+00:00 heroku[路由器] : at=info method=GET path="/service-worker.js" host=#.herokuapp.com request_id=065fb0eb-6606-4603- 8673-75e59445a1ea fwd="93.27.27.184" dyno=web.1 connect=0ms服务=1ms 状态=404 字节=400 协议=https 2018-05-24T18:25:41.902150+00:00 heroku[router]: at=info method=GET path="/static/css/main.969d7734.css.地图”主机=#.herokuapp.com request_id=a16b6a78-9167-4672-9888-3f141a46c3ef fwd="93.27.27.184" dyno=web.1 connect=0ms service=1ms status=404 bytes=415 protocol=https 这里我的 App.js :
(...)
alert("word = "+ this.state.word) // **SO FAR, THE VALUE IS STILL DISPLAYED**
fetch("/api/words",{
method:"POST",
headers: {
'Accept': 'application/json, text/plain, */*',
'Content-Type':'application/json'
},
body:JSON.stringify({ // **THEN I LOST THE CONTACT WITH THE VALUES FROM HERE**
"word":this.state.word,
"definition":this.state.definition,
"sound":this.state.audioRecorded
})
})
.then((res) => res.json())
.then((data) => console.log(data))
}
<form>
(...)
</form>
)
}
};
这是我的 server.js :
const {createServer} = require("http");
var express = require("express")
var path = require("path")
var app = express() ;
var port = process.env.PORT || 7500 ;
var databaseName = "ntsat";
var bodyParser = require("body-parser");
app.use(bodyParser.json()) ;
app.use(express.static(path.join(__dirname, '../react-ui/public/index.html')));
var mongoose = require("mongoose");
var url = process.env.MONGOLAB_URI;
mongoose.connect([url to my mlab])
var db = mongoose.connection;
db.on ("error", console.error.bind(console, "connection fails"))
db.once("open", function () {
console.log(`mongoose : connection succeed on ${databaseName} database`);
});
app.use("/api", require("./router/router.js"));
app.listen( port, function(){
console.log("Express server listening on port %d in %s mode", this.address().port,
app.settings.env);
});
module.exports = app;
解决方案
我已经为Axios 模块更改了 Fetch 模块,现在可以正常工作了。
推荐阅读
- ruby - ActiveRecord::StatementInvalid: 找不到表'users' Rails 5 教程
- python - 当我的玩家在pygame中碰撞时如何让我的玩家穿过敌人?
- r - 如何在 R 中将“foreach”和“%dopar%”与“R6”类一起使用?
- sql - 如何通过并发查询确保跨多个相关表的数据一致性
- assembly - TEST指令如何检查汇编语言中的数字是偶数还是奇数
- c# - 在经典云服务中使用 ActiveDirectoryMembershipProvider,但不适用于 Azure Web App
- python - 如何在 CherryPy 中使用 URL 正则表达式?
- google-analytics - 流量来源和虚拟事件的问题。谷歌标签管理器分析
- python - Discord.py - 如果命令被编辑,让我的机器人编辑他的响应
- webpack - 仅将主要组件与 Svelte 捆绑在一起