AssertionError [ERR_ASSERTION]: обработчик (func) требуется в mongodb - PullRequest
0 голосов
/ 15 мая 2018

Я использую mongooose для подключения к mongodb, но получаю следующую ошибку

/Users/uchitkumar/api/node_modules/mongodb/lib/mongo_client.js:804
          throw err;
          ^

AssertionError [ERR_ASSERTION]: handler (func) is required
    at new AssertionError (internal/errors.js:315:11)
    at _toss (/Users/uchitkumar/api/node_modules/assert-plus/assert.js:22:11)
    at Function.out.(anonymous function) [as func] (/Users/uchitkumar/api/node_modules/assert-plus/assert.js:122:17)
    at process (/Users/uchitkumar/api/node_modules/restify/lib/server.js:1352:20)
    at argumentsToChain (/Users/uchitkumar/api/node_modules/restify/lib/server.js:1361:12)
    at Server.serverMethod [as put] (/Users/uchitkumar/api/node_modules/restify/lib/server.js:1475:21)

мой код для подключения следующий:

server.listen(config.port, function() {

    mongoose.connection.on('error', function(err) {
        console.log('Mongoose default connection error: ' + err)
        process.exit(1)
    })

    mongoose.connection.on('open', function(err) {

        if (err) {
            console.log('Mongoose default connection error: ' + err)
            process.exit(1)
        }

        console.log(
            '%s v%s ready to accept connections on port %s in %s environment.',
            server.name,
            config.version,
            config.port,
            config.env
        )

        require('./routes')

    })

    global.db = mongoose.connect(config.db.uri)

})

код маршрута

server.get('/', function indexHTML(req, res, next) {
    fs.readFile(__dirname + '/../index.html', function (err, data) {
        if (err) {
            next(err);
            return;
        }

        res.setHeader('Content-Type', 'text/html');
        res.writeHead(200);
        res.end(data);
        next();
    });
});

Это было нормально ... Я что-то изменил, и теперь он перестал работать с этой ошибкой.Ошибка в том, что он не может утверждать какую-то функцию ... в клиенте mongodb.ему нужна была функция.Это просит добавить некоторую функцию обработчика?куда добавить то заранее спасибо

1 Ответ

0 голосов
/ 22 апреля 2019

handler (func) is required - ошибка, возникающая при восстановлении, если один из ваших маршрутов или промежуточное программное обеспечение не определено.

Например:

server.put('/foo/');

Это также приведет к его запуску:

var myMidelware = undefined; // todo: define this

app.put('/route', myMiddleware, (req, res) => { /* todo: handle req */ })

Это вызовет ошибку handler (func) is required, когда он попытается проверить myMidelwareэто функция.

Я не вижу этого в коде ваших опубликованных маршрутов, но я думаю, что это как-то происходит.У вас есть метод PUT, определенный где-то?

(Та же ошибка может произойти и с server.get (), server.post () и т. Д., Но [as put] в трассировке стека указывает на то, что он задыхается от вызова server.put ().)

См. https://github.com/restify/node-restify/blob/v7.2.1/lib/server.js#L1386

Кроме того, я не верю, что ошибка имеет какое-либо отношение к mongodb;Монго просто в стеке, потому что вы запускаете require('./routes') в обработчике открытого соединения монго.Ошибка исходит из вашего файла маршрутов.Досадно, что обработка ошибок Монго теряет часть трассировки стека.Если вы переместили require('./routes') за пределы монго, это даст вам правильную трассировку стека.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...