0

嗨,我正在尝试导出一个函数(以便其他路由可以使用这个函数来验证证书和一个快速路由器,以便我可以将它添加到我的主类以安装路由。这是因为我相信这个函数并且路由都提供相同的“功能”,我想将它封装在一个文件中,所以我想导出函数和路由器来使用!这是下面的代码,我得到一个错误......注意我想做 verifytoken.router 来引用路由器,然后 verifytoken.verify 来引用其他文件中的函数

/routes/verifytoken.js 文件

const router = require('express').Router();
const jwt = require('jsonwebtoken');

function verify (req, res, next) {
    const token = req.header("auth-token");
    if (!token) return res.status(401).send("Access Denied");

    try {
        const verified = jwt.verify(token, process.env.TOKEN_SECRET);
        req.user = verified;
        next();
    } catch (error) {
        res.status(400).send("Invalid Token")
    }
}

router.get("/tester", (req, res) => {
    res.status(200).send("validation please work bro"); 
});

module.exports = {
    verify:verify,
    router:router
}

我的主要 index.js 文件

const express = require('express');

//import routes
const verifytoken = require('./routes/verifytoken')

const app = express(); 

//route middlewares
app.use("/api/user". verifytoken.router);

app.listen(3000 , () => console.log('Server Running...'))

堆栈跟踪是:

app.use("/api/user". verifytoken.router);
                                 ^

TypeError: Cannot read property 'router' of undefined
4

2 回答 2

3

1) Another typo:

app.use("/api/user". verifytoken.router);

Should be: (note dot . instead of comma ,)

app.use("/api/user", verifytoken.router);

2) You're using the wrong filename in the imported module:

const verifytoken = require('./routes/verifytoken');

Should be:

const verifytoken = require('./routes/verify');

The required file is named verify.js not verifytoken.js

于 2020-02-15T20:19:05.320 回答
1

I think there's another typo (dot), try:

app.use("/api/user", verifytoken.router);
于 2020-02-15T20:20:18.990 回答