我无法在快速路由中使用套接字进行POST。获取错误"Cannot POST /send"
在我的服务器代码下面。
app.js
var express = require('express');
var path = require('path');
var app = express();
var server = require('http').createServer(app);
var io = require('socket.io')(server);
var bodyParser = require('body-parser');
var session = require('express-session');
app.use(express.static(__dirname + '/node_modules'));
app.use("/css", express.static(__dirname + '/css'));
app.use("/js", express.static(__dirname + '/js'));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));
var aws_router = require('./routes/aws')(io);
var another_routes = require('./routes/another.js')(app);
app.get('/', function (req, res) {
res.sendFile(path.join(__dirname + '/index.html'));
});
server.listen(8080);
在我的 routes / aws.js 中我基本上有数据库读/写
var express = require('express');
var router = express.Router();
var bodyParser = require('body-parser');
var path = require('path');
var process = require('process');
var aws_router = function(io){
router.post('/view', function(req, res) {
//need to read from database
var email = req.body.emailView;
var paramsRead = {
TableName: tableNameShopper,
Key:{
"email": email
}
};
readFromTable(paramsRead).then((results) => {
var objShopper = JSON.parse(results);
if(results =="{}"){
//nothing to do
console.log("got null");
}
else{
io.sockets.emit("viewdata", objShopper);
}
//res.json(request.objShopper)
});
res.sendFile(path.join(process.cwd() + '/view.html'));
});
return router;
}
module.exports = aws_router;
我可以在没有socket.io的情况下进行POST但是当我添加socket.io功能时,我无法进行POST。我按照this示例,但没有帮助
我错过了什么?
答案 0 :(得分:0)
您忘记在aws_router
功能结束时返回路由器实例:
var aws_router = function(io) {
...
return router;
}
module.exports = aws_router;
此外,您应该通过添加以下行来告诉express使用创建的路由模块routes/aws.js
:
app.use('/', aws_router);