以下是示例代码:
var x = require('./folder/usefile');
var Auth = passport.authenticate('jwt', { session: false });
module.exports = function(app){
console.log('inside function(app)'); //line 1 executed!
var player = express.Router();
var finalRun = express.Router();
app.use('/api/usefile',player);
player.get('/', Auth, x.login);
player.post('/post', Auth, function(req, res){
x.register});
app.use('/api',finalRun);
console.log('inside api'); //line 2 is executed!
}
在usefile
我的登录功能存在,导出。
我在这里使用护照,其功能存在于单独的文件中,此处仅用于身份验证。
当我跑http://localhost:8080/api/usefile/--->对于get
方法,它显示404. post
方法相同。
控制台是打印第1行和第2行(在评论中已提到),流程是第1行,第2行。
任何人都可以帮我找到我在这里犯的错误吗?
答案 0 :(得分:2)
您已创建了两个路由器实例player
和finalRun
。有两个主要问题:
player.use('/usefile',player)
应为app.use('/usefile',player)
。 express.Router().use
用于为注册到路由器的所有路由添加中间件(在本例中为player
)。例如,如果您希望使用Passport的Auth
中间件用于每个player
路由,则可以将其声明为player.use(Auth)
。finalRun
路由器的任何路由处理。因此,在这种情况下,使用player
注册的路由处理程序将处理host/usefile
,而finalRun
将处理任何host/api
。如果您希望注册player
的处理程序处理/api/usefile
,使用单个路由器实例会更简单。
将/api/usefile
路径注册到player
路由器,如:
app.use('/api/usefile', player);