Bạn có biết rằng bạn đang gửi index.html cho mọi yêu cầu không?
Thay đổi điều này:
router.get('*', function(request, response) {
response.sendfile('./public/index.html');
});
Về điều này:
app.use(express.static(path.join(__dirname, 'public')));
Hoặc cái này:
app.use('/path', express.static(path.join(__dirname, 'public')));
nếu bạn phân phát các tệp tĩnh theo một số đường dẫn khác với /
.
Đảm bảo thêm phần này vào đầu tệp của bạn:
var path = require('path');
Đồng thời đảm bảo rằng bạn thực sự có public
thư mục ở đúng vị trí và nó bao gồm index.html
và các tệp bắt buộc khác.
Tất nhiên, bạn có thể gặp các vấn đề khác vì rõ ràng là bạn đã không bao gồm toàn bộ mã của mình.
Xem ví dụ của tôi trên GitHub nếu bạn muốn cung cấp các tệp tĩnh với Express:
- https://github.com/rsp/node-express-static-example
Đây là một ví dụ hoạt động mà bạn có thể tải xuống, đặt nội dung tĩnh của riêng bạn vào đúng thư mục và tùy chỉnh theo nhu cầu của riêng bạn.
Các ví dụ khác để thực hiện tương tự khi có và không có Express:
- https://github.com/rsp/node-static-http-servers
Các câu trả lời liên quan khác:
- Cách phân phát hình ảnh bằng nodejs
- Không thể tải tài nguyên từ cùng một thư mục khi chuyển hướng Javascript
- lệnh gọi js onload không hoạt động với nút
- Gửi toàn bộ nội dung thư mục cho khách hàng bằng express
- Node JS không phân phối hình ảnh tĩnh