Đôi khi đối với trường hợp cụ thể như thế này, thật dễ dàng, đủ để viết máy chủ của riêng bạn:
'use strict';
var host = '127.0.0.1', port = 3333;
var path = require('path');
var app = require('express')();
app.get('*', (req, res) => res.sendFile(path.join(__dirname, 'index.html')));
app.listen(port,() => console.log(`Listening on http://${host}:${port}/`));
Nhưng hãy nhớ rằng nếu mỗi con đường trả index.html
sau đó trong index.html
bạn có thể không tham khảo bất cứ điều gì giống như hình ảnh, phong cách trang tính hoặc tệp JavaScript phía máy khách. Không chỉ với mã được hiển thị ở trên mà còn với bất kỳ giải pháp nào gửi cùng một phản hồi (index.html
) đến mọi yêu cầu.
Bạn có thể cần phải thực hiện một số trường hợp ngoại lệ và nó không phải là khó khăn với Express:
'use strict';
var host = '127.0.0.1', port = 3333;
var path = require('path');
var app = require('express')();
app.get('/x.png', (req, res) => res.sendFile(path.join(__dirname, 'x.png')));
app.get('*', (req, res) => res.sendFile(path.join(__dirname, 'index.html')));
app.listen(port,() => console.log(`Listening on http://${host}:${port}/`));
Chỉ cần ghi nhớ rằng các ngoại lệ phải đến đầu vì con đường phù hợp đầu tiên sẽ được sử dụng cho một yêu cầu nhất định .
Tất nhiên bạn cần phải lưu mã này, ví dụ: để app.js
, cài đặt Express:
npm install express
và bắt đầu nó với:
node app.js
Đó là phức tạp hơn sử dụng một giải pháp sẵn sàng (tuy nhiên, như bạn có thể thấy, không phải là phức tạp hoặc là) nhưng bạn có nhiều linh hoạt hơn trong cách chính xác bạn muốn nó hoạt động. Nó cũng dễ dàng để thêm khai thác gỗ, vv
'-P hoặc proxy --proxy tất cả các yêu cầu mà không thể được giải quyết tại địa phương để các url nhất định. ví dụ: -P http: // someurl.com' => Bạn có thể thử 'http-server -P http: // localhost: 8080 /' không? – DrakaSAN
Vì vậy, giải pháp trong [câu trả lời của tôi] (http://stackoverflow.com/questions/39744309/node-http-server-to-respond-with-index-html-to-any-request/39744827#39744827) hoạt động cho bạn? – rsp