我正在尝试为不同的路线提供不同静态目录的网站。
如果对/tools*
路由发出get请求,我想使用/dist/toolsApp/
目录作为我的前端代码的基本目录。
如果对/net*
路由发出get请求,我想使用/dist/netIdApp/
目录作为我的前端代码的基本目录。
如果对*路由发出get请求,我想使用/dist/homeApp/
目录作为我的前端代码的基本目录。
我无法确定在哪里插入app.use(express.static(__dirname + DIRECTORY));
代码行。我最初尝试下面的代码,但很快意识到这段代码不对,因为我不想合并目录(它们有相互冲突的文件名)。
// Tools Routes
app.use(express.static(__dirname + '/dist/toolsApp/'));
app.get('/tools*', function(req, res) {
res.sendFile(path.join(__dirname + '/dist/toolsApp/index.html'));
});
app.use(express.static(__dirname + '/dist/netIdApp/'));
// Net-Id Authenticated Routes
app.get('/net*', function(req, res) {
res.sendFile(path.join(__dirname + '/dist/netIdApp/index.html'));
});
app.use(express.static(__dirname + '/dist/homeApp'));
// Default Route
app.get('*', function(req, res) {
res.sendFile(path.join(__dirname + '/dist/homeApp/index.html'));
});
然后我尝试为每个app.uses指定一个路由,如下所示。而且似乎只发送了最后一条路线(我也尝试将最后一个app.use从'*'改为'/'并且没有改变任何东西)。结果是前端get请求最终在文件名后附加了'/',使得Express服务器将请求解释为目录而不是常规文件。我真的不确定为什么会这样。
// Tools Routes
app.use('/tools*', express.static(__dirname + '/dist/toolsApp/'));
app.get('/tools*', function(req, res) {
res.sendFile(path.join(__dirname + '/dist/toolsApp/index.html'));
});
app.use('/net*', express.static(__dirname + '/dist/netIdApp/'));
// Net-Id Authenticated Routes
app.get('/net*', function(req, res) {
res.sendFile(path.join(__dirname + '/dist/netIdApp/index.html'));
});
app.use('*', express.static(__dirname + '/dist/homeApp'));
// Default Route
app.get('*', function(req, res) {
res.sendFile(path.join(__dirname + '/dist/homeApp/index.html'));
});
最后,我已尝试将该行放在相应的app.get中,但这样做不正常(express不发送前端文件)。
// Tools Routes
app.get('/tools*', function(req, res) {
app.use(express.static(__dirname + '/dist/toolsApp/'));
res.sendFile(path.join(__dirname + '/dist/toolsApp/index.html'));
});
// Net-Id Authenticated Routes
app.get('/net*', function(req, res) {
app.use(express.static(__dirname + '/dist/netIdApp/'));
res.sendFile(path.join(__dirname + '/dist/netIdApp/index.html'));
});
// Default Route
app.get('*', function(req, res) {
app.use(express.static(__dirname + '/dist/homeApp'));
res.sendFile(path.join(__dirname + '/dist/homeApp/index.html'));
});
有人可以帮我确定最佳方法吗? 节点:v8.11.2 快递:
答案 0 :(得分:1)
能够解决问题,以下代码确实有效,它只是将文件分别放在address.com/tools/,address.com/net/和address.com/中。
// Tools Routes
app.use('/tools*', express.static(__dirname + '/dist/toolsApp/'));
app.get('/tools*', function(req, res) {
res.sendFile(path.join(__dirname + '/dist/toolsApp/index.html'));
});
app.use('/net*', express.static(__dirname + '/dist/netIdApp/'));
// Net-Id Authenticated Routes
app.get('/net*', function(req, res) {
res.sendFile(path.join(__dirname + '/dist/netIdApp/index.html'));
});
app.use('*', express.static(__dirname + '/dist/homeApp'));
// Default Route
app.get('*', function(req, res) {
res.sendFile(path.join(__dirname + '/dist/homeApp/index.html'));
});