【发布时间】:2019-04-21 06:16:27
【问题描述】:
我是 NODEJS 的初学者,我正在尝试做一个小型聊天应用程序。我在 server.js. [ 在 app.use(' /',chatcat.router); ]。我附上了下面的错误。谁能告诉我?如何解决这个问题。提前谢谢...
server.js
const express=require('express');
const app=express();
const chatcat=require('./app');
app.set('port',process.env.PORT || 8086);
app.use(express.static('public'));
app.set('view engine','ejs');
app.use('/',chatcat.router);
app.listen(app.get('port'),()=>{
console.log('server is listening on port: ',app.get('port'));
});
app/index.js
const routes=require('./routes');
module.exports={
router: routes()
}
app/routes/index.js:
'use strict';
const h=require('../helpers');
console.log('routers/index outside');
module.exports=()=>{
console.log('routers/index inside');
let routes={
'get':{
'/':(req,res,next)=>{
res.render('login');
},
'/chat':(req,res,next)=>{
res.render('chatroom');
},
'/rooms':(req,res,next)=>{
res.render('rooms');
}
} ,
'post':{
'/chat':(req,res,next)=>{
res.render('chatroom');
}
}
}
return h.route12(routes);
};
app/helpers/index.js
'use strict';
const express=require('express');
const router=express.Router();
console.log('helpers/index outside');
let _registerRoutes=(routes,method)=>{
for(let key in routes){
if( (typeof routes[key] === 'object') && (routes[key] !==null) && !( routes[key] instanceof Array)){
_registerRoutes(routes[key],key);
}
else{
if(method === 'get'){
console.log('get in');
router.get(key,routes[key]);
}
else if(method ==='post'){
console.log('post in');
router.post(key,routes[key]);
}
}
}
}
let route12=routes=>{
console.log('calling registerroutes');
_registerRoutes(routes);
}
module.exports={
route12
}
我收到如下错误:
E:\STUDIES\Node Technologies\NodeJS\chatcat\node_modules\express\lib\router\index.js:458 throw new TypeError('Router.use() 需要一个中间件函数但得到一个' + gettype(fn)) ^
TypeError:Router.use() 需要一个中间件函数但得到一个未定义 在 Function.use (E:\STUDIES\Node Technologies\All about NodeJS\chatcat\node_modules\express\lib\router\index.js:458:13) 在功能。 (E:\STUDIES\Node Technologies\All about NodeJS\chatcat\node_modules\express\lib\application.js:220:21) 在 Array.forEach () 在 Function.use (E:\STUDIES\Node Technologies\All about NodeJS\chatcat\node_modules\express\lib\application.js:217:7) 在对象。 (E:\STUDIES\Node Technologies\All about NodeJS\chatcat\server.js:13:5) 在 Module._compile (module.js:653:30) 在 Object.Module._extensions..js (module.js:664:10) 在 Module.load (module.js:566:32) 在 tryModuleLoad (module.js:506:12) 在 Function.Module._load (module.js:498:3)
【问题讨论】: