Express socket.io路由不会POST

时间:2018-02-02 22:16:10

标签: node.js express socket.io

我无法在快速路由中使用套接字进行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示例,但没有帮助

我错过了什么?

1 个答案:

答案 0 :(得分:0)

您忘记在aws_router功能结束时返回路由器实例:

var aws_router = function(io) {

    ...

    return router;
} 

module.exports = aws_router;

此外,您应该通过添加以下行来告诉express使用创建的路由模块routes/aws.js

app.use('/', aws_router);