我正在尝试根据使用'require'请求的域名来加载模块。问题是我无法访问请求对象而无法检索域名(req.headers.host)。这是我所得到的副本。
server.js(主要js文件)
var express = require('express');
var app = express();
var server = require('http').Server(app)
var io = require('socket.io')(server)
server.listen(8080)
domains['localhost:8080'] = "myApp";
server.on('request', function(request, response){
application = require('./'+domains[request.headers.host]+'.js')
app.use('*', application);
});
myApp.js(模块)
var express = require('express');
var router = express.Router();
router.get('*', function(request, response){
response.end('All Good');
});
module.exports = router;
请注意server.js如何使用 server.on('request')。我这样做是因为我无法将app.use('*',application)包装在另一个app.all / app.get / app.use方法内,并且我还需要请求对象作为应用程序变量的require路径。
我想在server.js文件上实现的目标是使用 server.on('request')的替代方法,并且仍然通过所请求的域名来设置应用程序变量require路径。像这样...(请注意,由于请求对象未定义,所以这是行不通的)
var express = require('express');
var app = express();
var server = require('http').Server(app)
var io = require('socket.io')(server)
server.listen(8080)
domains['localhost:8080'] = "myApp";
application = require('./'+domains[request.headers.host]+'.js');
app.use('*', application);