Модуль экспорта для Express Маршрутизатор / Функции - PullRequest
0 голосов
/ 15 февраля 2020

Привет! Я пытаюсь экспортировать обе функции (чтобы другие маршруты могли использовать эту функцию для проверки сертификатов, а также маршрутизатор express, чтобы я мог добавить его в свой основной класс для подключения маршрута. Это потому что я считаю, что и функция, и маршрут обслуживают одну и ту же «функциональность», и я хочу инкапсулировать ее в один файл, поэтому я хочу экспортировать и функцию, и маршрутизатор для использования! Вот следующий код, который я получаю ошибка ... Примечание. Я ХОЧУ сделать verifytoken.router для ссылки на маршрутизатор, а затем verifytoken.verify для ссылки на функцию в других файлах

/ route / verifytoken. js file

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
}

мой основной индекс. 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

Ответы [ 2 ]

2 голосов
/ 15 февраля 2020

1) Другая опечатка:

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

Должно быть: (примечание точка. Вместо запятой)

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

2) Вы используете неправильное имя файла в импортированном модуль:

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

Должно быть:

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

Требуемый файл называется verify. js not verifytoken. js

1 голос
/ 15 февраля 2020

Я думаю, что есть еще одна опечатка (точка), попробуйте:

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