我正在使用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客户端。它需要一个函数。它是否要求添加一些处理程序函数?在哪里添加这句话提前谢谢
发布于 2019-04-23 03:03:58
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]
表明它被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之外,它会给你正确的堆栈跟踪。
https://stackoverflow.com/questions/50342518
复制相似问题