如何在 Node Js 中连接多个应用程序....(Node Js 在行动)

how to connect multiple app in Nodejs.... (Nodejs in action)

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)'吗?

你不应该实例化 two connect servers。你想要做的是将这些中间件链接为 .use('/api', users.users); .use('/api', pets.pets);

第一个中间件将通过 next() 将请求传递到 pets.pets。 您可以在 this link 阅读更多内容。遗憾的是 connect 不支持这种类型的链接:

.use('/api', [users.users,pets.pets]);

这将是解决您的问题的好方法,但 express 支持它。 因此,如果您正在研究 NodeJS,您绝对应该熟悉 Express,Connect 是一个很好的入门工具,但它非常简单,没有任何体面的功能,而且您身边没有一些 'hacking'。