nodejs express客户端在访问main之前无法获取/xxx.html

时间:2019-06-11 03:21:08

标签: javascript node.js express

我有以下服务器端代码:

var app = express();
app.get('/', function (req, res) {
    res.redirect('/main');
});
app.get('/main', function (req, res) {
    var d = new Date();
    res.sendFile(path.join(__dirname + '/main.html'));
    Info(req.ip + ' - Session to main.html built successfully! ');
    app.use(express.static(__dirname));
});

同一目录中还存在其他一些html文件,例如xxx.html。 我发现以下行为令人困惑,如果我建立一个新会话,请尝试访问localhost:7778 / xxx.html,客户端将无法获取:无法获取/xxx.html:

Failed to load resource: the server responded with a status of 404 (Not Found)

另一方面,在访问localhost:7778 /之后,然后尝试访问localhost:7778 / xxx.html,将会成功。

有人可以解释这种行为吗?我可以将localhost / xxx.html设置为可以直接访问吗?

非常感谢!

1 个答案:

答案 0 :(得分:1)

您需要将app.use(express.static(__dirname));移到app.get('/main', ...)处理程序之外:

var app = express();
app.get('/', function (req, res) {
    res.redirect('/main');
});
app.get('/main', function (req, res) {
    var d = new Date();
    res.sendFile(path.join(__dirname + '/main.html'));
    Info(req.ip + ' - Session to main.html built successfully! ');
});
app.use(express.static(__dirname));

根据Express document

  

app.use([path,] callback [,callback ...])

     

安装指定的中间件功能或指定路径上的功能

应将指定的中间件(express.static)声明为自身,并在服务器启动后执行。它不应作为GET /main处理程序中逻辑的一部分执行。