需要参数

时间:2016-11-07 23:23:31

标签: javascript node.js express

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

登录路由需要一个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错误...

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

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

编辑:

当我尝试访问/auth时,它给了我无法获取/验证错误..

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
}

我尝试访问的网址是http://localhost:8081/auth

1 个答案:

答案 0 :(得分:2)

第一个问题..

你的auth.js,有2个出口..所以你的最后一次出口将获胜。我觉得你的追求更像是 - > module.exports = function(firebase){return router; }

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

这里有2个选项,

  1. 不提供根,例如。 app.use(auth)
  2. 从您的获取中删除网址,因为它已经从app.use设置,因此router.get('/', callback)