我有以下服务器端代码:
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设置为可以直接访问吗?
非常感谢!
答案 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
处理程序中逻辑的一部分执行。