下面是一个示例代码:
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
我的登录功能存在并被导出。
我在这里使用护照,其功能存在于此处的单独文件中,仅用于身份验证。
当我为get
方法运行 http://localhost:8080/api/usefile/--->时,它显示 404。 post
方法相同。
控制台正在打印第 1 行和第 2 行(已在注释中提到(,流程是第 1 行、第 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
,使用单个路由器实例会简单得多。
向player
路由器注册/api/usefile
路径,如下所示:
app.use('/api/usefile', player);
app.use
文档
router.use
文档