簡體   English   中英

Router.use需要中間件功能嗎?

[英]Router.use requires middleware function?

所以我試圖在一個名為login_routes.js的獨立JS文件中分離我的登錄路由

我一直收到這個特定的錯誤:

TypeError:Router.use()需要中間件函數,但在Function處有一個Object。 (/Users/ethanthomas/Desktop/mean-stuff/express-server/node_modules/express/lib/router/index.js:446:13)

不完全理解它要求我implement

login_routes.js:

var express = require('express');
var app = express();

app.route('/login')

.get(function(req, res, next) {
    res.send('this is the login form');
})

.post(function(req, res, next) {
    console.log('processing');
    res.send('proccessing the login form!');
});

server.js:

var express = require('express');
var app = express();
var path = require('path');
var adminRoutes = require('./app/routes/admin_routes');
var loginRoutes = require('./app/routes/login_routes');

app.use('/admin', adminRoutes);
app.use('/login', loginRoutes);


//send our index.html file to the user for the home page
app.get('/', function(req, res) {
    res.sendFile(path.join(__dirname + '/index.html'));
});

//start the server
app.listen(1337);
console.log('leet is the magic port');

你的login_routes.js應該是這樣的(在express的上下文中):

 var express = require('express'); var router = express.Router(); // GET request to /login router.get('/', function(req, res, next) { // do something }); // POST request to /login router.post('/', function(req, res, next) { // do something }); module.exports = router; 

在你的app.js中使用

 var login_routes = require('./login_routes'); ... app.use('/login', login_routes); ... 

看看快速生成器模塊生成的代碼。 這是快遞網絡服務器應用程序的起點。

人們已經在評論中提供了解決方案的提示。

第一個問題是您需要從login_routes.js導出“sub”應用程序。 為此,請更改此:

var app = express();

進入:

var app = module.exports = express();

其次,您可能是無意中為GET /login/loginPOST /login/login創建路由。 要解決此問題,請在login_routes.js使用:

app.route('/').get(...).post(...);

這是因為子應用程序中的根路徑( login_routes.js的根路徑)將映射到主應用程序( server.js )中app.use()中使用的路徑。

這樣做:

login_routes.js:

exports.get = function( req, res ) {
  res.send('this is the login form');
};

exports.post = function( req, res ) {
  console.log('processing');
  res.send('proccessing the login form!');
};

server.js:

var loginRoutes = require('./app/routes/login_routes');

app.get('/login', loginRoutes.get);
app.put('/login', loginRoutes.post);

login_routes.js:

var express = require('express');
var app = express();

app.route('/login')

.get(function(req, res, next) {
    res.send('this is the login form');
})

.post(function(req, res, next) {
    console.log('processing');
    res.send('proccessing the login form!');
});

module.exports = router;

只需module.exports = router然后就可以了

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM