gpt4 book ai didi

javascript - AssertionError [ERR_ASSERTION] : handler (func) is required in mongodb

转载 作者:IT老高 更新时间:2023-10-28 12:31:59 27 4
gpt4 key购买 nike

我正在使用 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 客户端中断言某些功能。它需要一个功能。是否要求添加一些处理函数?在哪里添加提前致谢

最佳答案

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

例如:

server.put('/foo/');

这也会触发它:

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] 表明它在服务器上阻塞。 put() 调用。)

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

另外,我不相信这个错误与 mongodb 有任何关系; mongo 只是在堆栈中,因为您在 mongo 连接打开处理程序中运行 require('./routes') 。错误来自您的路线文件。令人讨厌的是,mongo 的错误处理正在丢失部分堆栈跟踪。如果您将 require('./routes') 移到 mongo 内容之外,它将为您提供正确的堆栈跟踪。

关于javascript - AssertionError [ERR_ASSERTION] : handler (func) is required in mongodb,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50342518/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com