let api = connect()
.use(users.users)
.use(pets.pets)
.use(errorHandler.errorHandler);
let app = connect()
.use(hello.hello)
.use('/api', api)
.use(errorPage.errorPage)
.listen(3000);
运行中的Nodejs中的源代码。
它不起作用。 =>永远不会调用'api'。当URL为/ api时,什么也没有发生。
我该如何解决?
pets.js
module.exports.pets = function pets(req, res, next) {
if (req.url.match(/^\/pet\/(.+)/)) {
foo();
}
else{
next();
}
}
users.js
let db = {
users: [
{name: 'tobi'},
{name: 'loki'},
{name: 'jane'}
]
};
module.exports.users = function users(req, res, next) {
let match = req.url.match(/^\/user\/(.+)/);
if(match) {
let user;
db.users.map(function(value){
if(value.name == match[1])
user = match[1];
});
if(user) {
res.setHeader('Content-Type', 'application/json');
res.end(JSON.stringify(user));
}
else {
let err = new Error('User not found');
err.notFound = true;
next(err);
}
}
else {
next();
}
};
,连接版本为 “ connect”:“ ^ 3.6.6”
是否可以使用“ connect(app)”?
答案 0 :(得分:1)
您不应实例化两个 连接 服务器。您要做的是将这些中间件链接为
.use('/api', users.users);
.use('/api', pets.pets);
第一个中间件将通过next()
将请求传递到pets.pets。
您可以在this链接中阅读更多内容。遗憾的是,connect不支持这种类型的链接:
.use('/api', [users.users,pets.pets]);
这将是解决您问题的好方法,但express支持。 因此,如果您正在研究NodeJS,则一定要熟悉Express,Connect是一个很好的入门工具,但是它非常简单,没有任何像样的功能,并且没有任何“骇客”功能。