需要参数

我想从app.js文件分离我的路线。

login路线需要一个Firebase实例。

路线/ auth.js

var express = require('express'); var router = express.Router(); module.exports = function(firebase) { ... } module.exports = router; 

app.js

 var firebase = require('firebase'); var config = { ... } firebase.initializeApp(config); var auth = require('./routes/auth')(firebase) app.use('/admin', auth) 

当我启动服务器,它给了我一个TypeError: Cannot read property 'indexOf' of undefined错误TypeError: Cannot read property 'indexOf' of undefined

它指向app.js中的require语句:

var auth = require('./routes/auth')(firebase)


编辑:

当我尝试访问/auth它给了我一个无法GET /身份validation错误..

app.js

 const PORT = 8081 ... var auth = require('./routes/auth')(firebase) app.use('/auth', auth) app.listen(PORT, function () { console.log(util.format('Example app listening on port %d!', PORT)) }) 

路线/ auth.js

 var express = require('express'); var router = express.Router(); module.exports = function(firebase) { router.get('/auth', function(req, res) { res.send('hi') }) return router } 

即时通讯尝试访问的URL是http:// localhost:8081 / auth

对于第一个问题..

你的auth.js,有2个出口..所以你最后的出口将赢得。 我想你以后更像 – > module.exports = function(firebase){return router; }

第二个问题是你使用的app.use(url,obj)..你提供的url将成为你的中间件的根节点。所以当你做了router.get(url,callback),那么发生了什么url将成为/aut/auth

2个选项在这里,

  1. 不要提供根,例如。 app.use(auth)
  2. 从你的get中移除url,因为它已经从app.use设置,所以router.get('/', callback)