如何在Nodejs中连接多个应用程序。...(正在运行Nodejs)

时间:2018-08-28 09:59:47

标签: node.js connect

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)”?

1 个答案:

答案 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是一个很好的入门工具,但是它非常简单,没有任何像样的功能,并且没有任何“骇客”功能。