Is it possible to set a base URL for NodeJS app?

前端 未结 7 563
有刺的猬
有刺的猬 2020-11-29 19:51

I want to be able to host multiple NodeJS apps under the same domain, without using sub-domains (like google.com/reader instead of images.google.com). The problem is that I\

7条回答
  •  余生分开走
    2020-11-29 20:10

    I know this is a very old question but Express has changed a lot since most these answers were posted so I thought I'd share my approach.

    You can, of course, use Routers with Express 4 to group together related functionality behind a particular path. This is well documented and has already been covered by other answers.

    However, it is also possible to mount an entire application at a particular path. As an example, let's assume our application (the one we want to host at /myapp) looks like this, in a file called myapp.js:

    var express = require('express'),
        path = require('path'),
        app = express();
    
    app.use(express.static(path.join(__dirname, 'public')));
    
    app.get('/hello', function(req, res) {
        res.send('Hello');
    });
    
    // Lots of other stuff here
    
    exports.app = app;
    

    In our main js file we could then mount this whole application at the path /myapp:

    var express = require('express'),
        app = express(),
        myApp = require('./myapp').app;
    
    app.use('/myapp', myApp);
    
    app.listen(3000);
    

    Note that we've created two applications here, one mounted on the other. The main application could have further sub-apps mounted at different paths as required.

    The code in myapp.js is completely independent of where it was mounted. It's similar to the structure used by the express-generator in that regard.

    Some documentation about sub-apps can be found here:

    https://expressjs.com/en/4x/api.html#app.mountpath https://expressjs.com/en/4x/api.html#app.onmount

提交回复
热议问题