Node.js Express通配符(catch-all)将无法在App root上运行

Chr*_*ris 2 node.js express node.js-connect

我没有使用任何模板引擎.我想将所有内容重定向到我的静态文件/public/desktop.html

app.use(express.static(__dirname + '/public'));

function route(req, res, next) {
    res.sendfile(__dirname + '/public/desktop.html');
    myURL = url.parse(req.url).pathname;
}
Run Code Online (Sandbox Code Playgroud)

如果我使用它并访问url上的'localhost:8080/anypath,它会很好用

但如果我尝试'localhost:8080 /'我什么也得不到:

app.get('*', route); 
Run Code Online (Sandbox Code Playgroud)

如果我使用其中任何一个,我无法访问任何内容:

app.get('/', route);
app.get('/*', route); 
Run Code Online (Sandbox Code Playgroud)

Bin*_*los 6

app.use(express.static(__ dirname +'/ public'))正在挂载一个静态文件处理程序,它将'/'转换为'/index.html'并发送404,因为它无法找到index.html

如果您更改周围的顺序:

function route(req, res, next) {
  if(req.url!='/'){
    return next();
  }
  res.sendfile(__dirname + '/public/desktop.html');
}

app.get('/', route);
app.use(express.static(__dirname + '/public'));
Run Code Online (Sandbox Code Playgroud)

它可能有用吗?