Методы пути к регулярному выражению TypeError: Невозможно прочитать свойство 'length' из неопределенного

1

Итак, это сообщение об ошибке:

/home/alex/Documents/Projects/ontario-job-portal/node_modules/path-to-regexp/index.js:63 path = ('^' + path + (strict? '': путь [путь.length - 1 ] === '/'? '?': '/?')) ^

TypeError: Невозможно прочитать свойство length для undefined в pathtoRegexp (/home/alex/Documents/Projects/ontario-job-portal/node_modules/path-to-regexp/index.js:63:49) на новом слое (/home/alex/Documents/Projects/ontario-job-portal/node_modules/express/lib/router/layer.js:45:17) в Function.use(/home/alex/Documents/Projects/ontario-job-portal/node_modules/express/lib/router/index.js:464:17) в Object. (/home/alex/Documents/Projects/ontario-job-portal/routes/event.js:11:8) в Module._compile (module.js: 652: 30) в Object.Module._extensions..js (модуль.js: 663: 10) в Module.load(module.js: 565: 32) в tryModuleLoad (module.js: 505: 12) в Function.Module._load (module.js: 497: 3) в Module.require(module.js: 596: 17) по требованию (internal/module.js: 11:18) в Object. (/home/alex/Documents/Projects/ontario-job-portal/app.js:15:13) в Module._compile (module.js: 652: 30) в Object.Module._extensions..js(module.js: 663: 10) в Module.load(module.js: 565: 32) в tryModuleLoad (module.js: 505: 12)

Если я перейду к месту в app.js, который должен выбросить ошибку, я вижу именно это:

var event = require('./routes/event');

Это правильный путь. Если я ошибаюсь, я получаю следующее:

Error: Cannot find module './routes/events'

Таким образом, путь правильный.

Если я прокомментирую эту часть, код будет работать. Но, к сожалению, мне нужен этот импорт для работы. Комментирование всего файла не помогает (выдает ту же длину неопределенной ошибки).

Переустановка всех узлов не помогает.

Это код для event.js

{
    var express = require('express');
    var router = express.Router();
    var Account = require('../models/account');
    var Event = require('../models/event');
    var functions = require('../globals/functions');
    var GeneralInfo = require('../models/general-info');
    var Posting = require('../models/posting');
}

router.use(functions.isLogisRegisteredForEventgedIn, functions.isBlocked);

/* GET main Event page. */
router.get('/', functions.isRegisteredForEvent, async (req, res, next) => {
    const event = await GeneralInfo.findOne().then(r => Event.findById(r.activeEventId)).catch(e => console.log(e));
    const postings = await Posting.find().where('eventId').equals(event._id).limit(10).catch(e => console.log(e));

    res.render('event/', {
        title: event.eventTitle,
        user: req.user,
        event: event,
        employers: employers,
        postings: postings,
    });
});

// Create Event
router.route('/create')
    .get(functions.isAdmin, (req, res, next) => {
        res.render('event/create', {
            title: 'Create a New Event',
            user: req.user,
            errorMsg: '',
        })
    })
    .post(functions.isAdmin, (req, res, next) => {
        var r = req.body;
        console.log('status', r.status);
        Event.create(new Event({
            'eventTitle': r.eventTitle,
            'location': r.location,
            'startDate': r.startDate,
            'endDate': r.endDate,
            'startTime': r.startTime,
            'endTime': r.endTime,
            'createdBy': req.user._id, // Here we will store the _ID from the user EOSP.
        })).then((event) => {
            GeneralInfo.find().then(doc => {
                if (doc.length > 0) {
                    if (req.body.status === 'true') {
                        GeneralInfo
                            .findByIdAndUpdate(doc[0]._id, {'activeEventId': event._id,})
                            .catch(e => console.log(e));
                    }
                } else {
                    // if (req.body.status === 'true') {
                    GeneralInfo
                        .create(new GeneralInfo({'activeEventId': undefined,}))
                        .catch(e => console.log(e));
                    // }
                }
            }).catch(e => console.log(e));
        }).then(() => res.redirect('/admin')).catch(e => console.log(e))
    });

// Event Details
router.route('/details/:_id')
    .get(functions.isAdmin, (req, res, next) => {
        Event.findById(req.params._id).then(doc => {
            res.render('event/details', {
                title: 'Event Details',
                user: req.user,
                event: doc
            })
        });
    })
    .post(functions.isAdmin, (req, res, next) => {
        var r = req.body;
        Event.findByIdAndUpdate(req.params._id, {
            $set: {
                'eventTitle': r.eventTitle,
                'location': r.location,
                'startDate': r.startDate,
                'endDate': r.endDate,
                'startTime': r.startTime,
                'endTime': r.endTime,
            }
        }).then(() => res.redirect('/admin')).catch(e => console.log(e));
    });

// Activate the Event
router.get('/activate/:_id', functions.isAdmin, (req, res, next) => {
    GeneralInfo.findOne().then(r => {
        GeneralInfo.findByIdAndUpdate(r._id, {
            'activeEventId': req.params._id,
        }).then(() => res.redirect('/admin'))
    })
});

router.get('/deactivate/:_id', functions.isAdmin, (req, res, next) => {
    GeneralInfo.findOne().then(r => {
        GeneralInfo.findByIdAndUpdate(r._id, {
            'activeEventId': undefined,
        }).then(() => res.redirect('/admin'))
    })
});

router.get('/close/:_id', functions.isAdmin, (req, res, next) => {
    Event.findByIdAndUpdate(req.params._id, {
        $set: {
            'isFinished': true
        }
    }).then(() => {
        GeneralInfo.findOne().then(r => {
            GeneralInfo.findByIdAndUpdate(r._id, {
                'activeEventId': undefined,
            })
        }).then(() => {
            res.redirect('/admin');
        }).catch(e => console.log(e));
    }).catch(e => console.log(e));
});

// register users to a Event
router.get('/registerEvent', functions.isLoggedIn, functions.isBlocked, async (req, res, next) => {
        var eventId = await GeneralInfo.findOne().then(eventId => eventId.activeEventId).catch(e => console.log(e));
        var currEvent = await Event.findById(eventId).catch(e => console.log(e));
        const user = req.user;
        if (user.accType === 'employer') {
            let shouldAdd = true;
            try {
                const tmp = currEvent.attendants.employers.filter(e => e.id !== user._id);
                tmp.length > 0 ? shouldAdd = false : shouldAdd = true;
            } catch (e) {
                shouldAdd = true;
            }
            if (shouldAdd) {
                Event.findByIdAndUpdate(eventId, {
                    $push: {'attendants.employers': {'id': user._id, 'boothVisits': 0}, $upsert: true,}
                }).then(r => {
                    console.log(r);
                    res.redirect('/event');
                }).catch(e => console.log(e));
            } else {
                res.redirect('/event');
            }
        } else if (user.accType === 'seeker') {
            let shouldAdd = true;
            try {
                const tmp = currEvent.attendants.seekers.filter(e => e.id !== user._id);
                tmp.length > 0 ? shouldAdd = false : shouldAdd = true;
            } catch (e) {
                shouldAdd = true;
            }
            if (shouldAdd) {
                Event.findByIdAndUpdate(eventId, {
                    $push: {'attendants.seekers': user._id, $upsert: true,}
                }).then(r => {
                    console.log(r);
                    res.redirect('/event');
                }).catch(e => console.log(e));
            } else {
                res.redirect('/event');
            }
        } else {
            res.redirect('/event');
        }
    }
);

module.exports = router;
Теги:
npm

1 ответ

1
Лучший ответ

Хорошо. это

router.use(functions.isLogisRegisteredForEventgedIn, functions.isBlocked);

была проблема. Мои имена функций были испорчены

Ещё вопросы

Сообщество Overcoder
Наверх
Меню