首页 > 解决方案 > 创建一个函数并在 node.js 中的另一个文件上调用它

问题描述

我的login.js页面上有这个检查身份验证功能,在我的routes文件夹内。我的目录是这样设置的:

routes
    login.js

views
    index.ejs
    login.ejs

app.js

所以我有一个这样的函数app.js

app.get('/dashboard', auth, (req, res) => {
     ...

})

里面的auth函数login.js是这样的:

    function auth(res, req, next) {
    if (req.session.loggedin) {
        return next();
    } else {
      req.session.destory;
      res.redirect('/login')
    }
}

module.exports = app

这是我在登录页面中要求代码的方式:

var login = require('./routes/login')
app.use(login)

但是,当我需要正确的文件名和所有内容时,它会说无法识别身份验证。这怎么可能?我该如何解决?

标签: javascriptnode.js

解决方案


login.js文件中,您编写了module.exports = app. 相反,您必须编写module.exports = auth发送 auth 函数。

所以,当你var login = require('./routes/login'),你auth()从函数中获取函数login.js并将函数存储在名称loginapp.js

因此,在引用 in 时app.js,您的功能是login()而不是auth()您以这种方式导入它。

如果你想使用authinapp.js你可以做var auth = require('./routes/login');

否则app.get('dashboard', auth ...你必须写而不是写app.get('dashboard', login ...


推荐阅读