gpt4 book ai didi

javascript - 为什么带有 MongoDB 的 Node.js Express 不响应获取 API 调用(ReactJS 和 Redux)?

转载 作者:行者123 更新时间:2023-11-30 11:51:46 25 4
gpt4 key购买 nike

将 ReactJS、Redux、Webpack、Node.js 和 Express 与 MongoDB 结合使用,我遵循教程 https://github.com/vasansr/mern-es6并尝试将其整合到我的项目中。首先,我试图向我创建的服务器发出 POST 请求。它得到成功的响应并且没有记录错误。然而在服务器 POST API 内部,它不会记录 console.log('Req body', req.body);,并且在终端中我检查数据库是否已使用 创建mongo -> show dbs 但它是空的。

难道是有什么东西拦截了服务器的请求?可能是什么问题?

最佳答案

这...

app.use('/', function (req, res) {
res.sendFile(path.resolve('client/index.html'));
});

先于:

app.post('/api/users/', function(req, res) {
//...
});

由于它是 app.use POST/api/users 仍会命中该中间件,并且 res.sendFile 结束请求/响应.您可能会看到您的帖子正在返回客户端 HTML。

尝试将您的客户端 HTML 端点移动到中间件的末端,就在错误处理程序之前(如果有的话)。这样,只有在您的 API 端点都不匹配时才会使用它。或者,如果您只希望 GET/ 返回 HTML,请将 use 更改为 get:

app.use(webpackDevMiddleware(compiler, {noInfo: true, publicPath: config.output.publicPath}));

app.use(webpackHotMiddleware(compiler));

app.use(express.static('dist')); //where bundle.js is

app.use(bodyParser.json());

app.post('/api/users/', function(req, res) {
console.log('Req body', req.body);
var newUser = req.body;
db.collection('users').insertOne(newUser, function(err, result) {
if(err) console.log(err);
var newId = result.insertedId;

db.collection('users').find({_id: newId}).next(function(err, doc) {
if(err) console.log(err);
res.json(doc);
});
});
});

app.get('/', function (req, res) {
res.sendFile(path.resolve('client/index.html'));
});

关于javascript - 为什么带有 MongoDB 的 Node.js Express 不响应获取 API 调用(ReactJS 和 Redux)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39238766/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com