首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >AssertionError [ERR_ASSERTION]:在mongodb中需要使用处理程序(func)

AssertionError [ERR_ASSERTION]:在mongodb中需要使用处理程序(func)
EN

Stack Overflow用户
提问于 2018-05-15 12:49:23
回答 1查看 4.7K关注 0票数 5

我正在使用mongooose连接mongodb,但我收到以下错误

代码语言:javascript
复制
/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)

我的连接代码如下

代码语言:javascript
复制
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)

})

路由代码

代码语言:javascript
复制
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客户端。它需要一个函数。它是否要求添加一些处理程序函数?在哪里添加这句话提前谢谢

EN

回答 1

Stack Overflow用户

发布于 2019-04-23 03:03:58

handler (func) is required是一个错误,如果您的某个路由或中间件未定义,则由restify抛出。

例如:

代码语言:javascript
复制
server.put('/foo/');

这也会触发它:

代码语言:javascript
复制
var myMidelware = undefined; // todo: define this

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

这将在尝试验证myMidelware是一个函数时抛出错误handler (func) is required

我在你发布的路由代码中看不到这一点,但我认为它正在以某种方式发生。您是否在某个地方定义了PUT方法?

( server.get()、server.post()等也会发生同样的错误,但是堆栈跟踪中的[as put]表明它被server.put()调用阻塞了。)

请参阅https://github.com/restify/node-restify/blob/v7.2.1/lib/server.js#L1386

此外,我不认为这个错误与mongodb有任何关系;mongo只是在堆栈中,因为您在mongo连接打开处理程序中运行require('./routes')。错误来自于你的路由文件。令人恼火的是,mongo的错误处理正在丢失部分堆栈跟踪。如果你把require('./routes')移到mongo之外,它会给你正确的堆栈跟踪。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50342518

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档