Tôi đang làm việc trên một ứng dụng web một trang bằng cách sử dụng Node + Express và handelbars cho tempalting. Mọi thứ hiện hoạt động tốt từ tệp index.html được phân phối từ tệp server.js khá chuẩn:Nút + Express với HTML tĩnh. Cách định tuyến tất cả các yêu cầu tới index.html?
var express = require('express');
var server = express();
server.use(express.static(__dirname + '/public'));
var port = 10001;
server.listen(port, function() {
console.log('server listening on port ' + port);
});
Điều này hoạt động hoàn hảo khi tải từ http://localhost:10001/
. Vấn đề của tôi là tôi đang sử dụng trạng thái đẩy trong ứng dụng, vì vậy trình duyệt có thể hiển thị URL như http://localhost:10001/foo/bar
và sau đó nếu tôi làm mới trang, tôi nhận được lỗi Cannot GET /foo/bar
vì không có tuyến đường cho điều này.
Vì vậy, câu hỏi của tôi, và tha thứ cho sự noobishness đáng kinh ngạc của tôi khi nói đến nút, tôi có thể làm cho nó để tất cả các yêu cầu tuyến đường đến index.html? JavaScript trong ứng dụng của tôi có thể xử lý hiển thị đúng nội dung dựa trên thông số URL khi tải trang. Tôi không muốn xác định các tuyến tùy chỉnh vì số lượng sẽ lớn và các đường dẫn cho chúng có thể thay đổi động.
này hoạt động, với sự chỉnh sửa tôi thực hiện, ngoại trừ nó cũng hoạt động trên URL cho file CSS của tôi, vì vậy nó đóng vai trò index.html thay vì file CSS. Có cách nào để chỉ áp dụng điều này bằng loại mime (tức là, chỉ trên html). – JPollock
@JPollock đăng ký phần mềm trung gian cho các tệp công khai trước khi bắt tuyến đường tất cả của bạn. Bằng cách đó, yêu cầu css/js sẽ được chọn trước tuyến đường chỉ mục của bạn. –