节点J的路由不工作

Node Js routing not working

本文关键字:工作 路由 节点      更新时间:2023-09-26

我正在尝试在nodejs中创建一个api。

我的server.js文件在之后

var http = require('http'),
    path = require('path'),
    async = require('async'), 
    socketio = require('socket.io'), 
    express = require('express'), 
    session = require('express-session'),
    logger = require('morgan'),
    bodyParser = require('body-parser');    
var app = express();
var server = http.createServer(app);
var io = socketio.listen(server);
  app.use(logger('dev'));
  app.use(bodyParser.json());
  app.all('/*', function(req, res, next) {
    // CORS headers
    res.header("Access-Control-Allow-Origin", "*"); // restrict it to the required domain
    res.header('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE,OPTIONS');
    // Set custom headers for CORS
    res.header('Access-Control-Allow-Headers', 'Content-type,Accept,X-Access-Token,X-Key');
    if (req.method == 'OPTIONS') {
      res.status(200).end();
    } else {
      next();
    }
  });
  app.all('/api/*', [require('./middlewares/validateRequest')]); 
  //app.use(express.static(path.resolve(__dirname, 'client')));
  app.use('/', require('./routes'));
  // If no route is matched by now, it must be a 404
  app.use(function(req, res, next) {
    var err = new Error('Not Found');
    err.status = 404;
    next(err);
  });        
var messages = [];
var sockets = [];
......
server.listen(process.env.PORT || 3000, process.env.IP || "0.0.0.0", function(){
  var addr = server.address();
  console.log("Meeting Panel listening at", addr.address + ":" + addr.port);
});

my/routes目录具有index.js文件

var express = require('express');
var router = express.Router();
var auth = require('./auth.js');
var meetings = require('./meetings.js');
var user = require('./users.js');
/*
 * Routes that can be accessed by any one
 */
router.post( '/login', auth.login);

/*
 * Routes that can be accessed only by authenticated & authorized users
 */
router.get('/api/admin/users', user.getAll);
 .....
 .....
module.exports = router;

现在,当我打开/login页面时,我得到以下错误

Error: Not Found
   at /home/ubuntu/workspace/server.js:46:15
   at Layer.handle [as handle_request] (/home/ubuntu/workspace/node_modules/express/lib/router/layer.js:95:5)
   at trim_prefix (/home/ubuntu/workspace/node_modules/express/lib/router/index.js:312:13)
   at /home/ubuntu/workspace/node_modules/express/lib/router/index.js:280:7
   at Function.process_params (/home/ubuntu/workspace/node_modules/express/lib/router/index.js:330:12)
   at next (/home/ubuntu/workspace/node_modules/express/lib/router/index.js:271:10)
   at /home/ubuntu/workspace/node_modules/express/lib/router/index.js:618:15
   at next (/home/ubuntu/workspace/node_modules/express/lib/router/index.js:256:14)
   at Function.handle (/home/ubuntu/workspace/node_modules/express/lib/router/index.js:176:3)
   at router (/home/ubuntu/workspace/node_modules/express/lib/router/index.js:46:12)

/login上的路由是在POST方法上定义的。如果您想从浏览器打开它(我认为这就是您正在做的),您应该定义router.get( '/login'...。我想您不希望在GET方法上定义/login路由,所以测试的另一个好选择是点击/api/admin/users

如果您只打开http://example/login在你的浏览器中,这将是一个get请求,所以在这种情况下,它不会找到你正在听post/login而不是get/login的路由。