Có cách nào để chèn phần mềm trung gian trong ngăn xếp Express không? Ý tôi là tôi muốn thiết lập app.js của tôi thành chuỗi trung gian chính và sau đó gọi các mô-đun khác truyền phiên bản ứng dụng và họ có thể chèn thêm phần mềm trung gian hơn (ví dụ: mô-đun xác thực muốn thêm hộ chiếu vào đúng địa điểm)Bạn có thể chèn phần mềm trung gian vào ứng dụng Node.JS Express
Trả lời
Bạn chắc chắn có thể vượt qua đối tượng app
của bạn đến các module khác và gọi use
đó. Tất nhiên, các hàm trung gian được thực thi theo thứ tự chúng được thêm, vì vậy bạn phải cẩn thận để đảm bảo rằng bạn gọi use
theo đúng thứ tự.
app.js
var app = express();
// ...
app.use(express.logger()); // first middleware function
var someOtherModule = require('./mod.js');
someOtherModule.init(app);
app.use(express.static()); // last middleware function)
mod.js
exports.init = function(app) {
app.use(function(req, res, next) {
});
};
Theo như thực sự tiêm một chức năng trung gian ở giữa của ngăn xếp (sau khi bạn đã gọi app.use
với một tập hợp các chức năng phần mềm trung gian), không có cách nào được ghi lại để làm điều đó. use
chỉ thêm chức năng vào cuối ngăn xếp.
use
là thực sự được cung cấp bởi Connect trong proto.js:
app.use = function(route, fn){
...
this.stack.push({ route: route, handle: fn });
return this;
};
Về mặt kỹ thuật, bạn có thể fiddle với app.stack
chính mình, nhưng tôi sẽ không làm này. Bạn sẽ rối tung với một chi tiết triển khai không có giấy tờ, có trách nhiệm thay đổi. Nói cách khác, có thể cập nhật trong tương lai thành hoặc Kết nối hoặc Express có thể phá vỡ ứng dụng của bạn.
Tôi không hiểu vấn đề là gì?
Bạn có thể thêm bất kỳ chức năng trong middleware:
app.use(function(req,res,next){
//some munipulation with req and res
next()
})
Và bạn có thể gửi app
này vào bạn đang moduls
Tôi nghĩ vấn đề là 'app.use' luôn thêm chức năng phần mềm trung gian của bạn * vào cuối * của ngăn xếp, vì vậy phần mềm trung gian được thêm vào trước đó có thể hoàn thành yêu cầu trước khi bạn có cơ hội chạy. – josh3736
Ví dụ? Khi nào nó cần? –
Để thử và giữ mọi thứ thêm mô-đun - vì vậy tôi muốn mọi thứ cần làm với xác thực trong authenticate.js - nó tạo đối tượng hộ chiếu bên trong đó thay vì truyền nó ra tôi muốn chuyển ứng dụng vào và ket mô-đun đó thêm hộ chiếu. initialize và passport.session middleware ngay sau khi express.session nhưng trước router – MrPurpleStreak
Bạn có thể sử dụng app.use (fn) hoặc ngăn xếp chúng như thế này:
app.get('/foo', fn1, fn2, fn3);
Chữ ký phải luôn luôn giống nhau và gọi tiếp theo();
function(req, res, next) {
next();
}
- 1. Cách đặt phần mềm trung gian vào tệp riêng của nó trong Node.js/Express.js
- 2. Có dnode có phần mềm trung gian xác thực không?
- 3. Node.js - Vấn đề với res.redirect trong phần mềm trung gian
- 4. NodeJS + Express - Áp dụng phần mềm trung gian phiên cho một số tuyến đường
- 5. Phần mềm trung gian của Symfony2
- 6. Có thể thêm dữ liệu vào đối tượng phản hồi trong mô-đun phần mềm trung gian trong Express.js không?
- 7. Kết nối hoặc phần mềm trung gian Express để sửa đổi phản hồi.body
- 8. Node.js Express3 - Phần mềm trung gian để thêm dữ liệu hiển thị vào tất cả các yêu cầu hiển thị
- 9. Node.js trên Heroku: sử dụng phần mềm trung gian để phát triển, nhưng nội dung tĩnh trên sản xuất?
- 10. thể hiện phần mềm trung gian toàn cầu không được gọi là
- 11. Chỉ định tuyến đường theo tên miền phụ bằng Express bằng cách sử dụng phần mềm trung gian vhost
- 12. Sự khác nhau giữa phần mềm trung gian của Scrapy và phần mềm trung gian tải xuống là gì?
- 13. Middleware của Rails: thêm phần mềm trung gian vào config.ru hoặc vào mảng config.middleware?
- 14. Phạm vi chức năng phần mềm trung gian trong express.js
- 15. Phần mềm trung gian Django và thay đổi HttpRequest
- 16. Phần mềm trung gian hướng tin nhắn là gì?
- 17. Tạo phần mềm trung gian expressjs chấp nhận tham số
- 18. phần mềm kết nối trung gian cho coffeescript?
- 19. Xác thực Twitter với phần mềm trung gian hộ chiếu trong Node
- 20. Biến "env" trong phần mềm trung gian Rack là gì?
- 21. Có thể áp dụng xác thực cơ bản/phần mềm trung gian trên các tuyến với danh sách trắng trong Express không?
- 22. Cách sử dụng khởi tạo không đồng bộ trong phần mềm kết nối trung gian?
- 23. Không thể xác định phần mềm trung gian tải xuống tùy chỉnh trong Scrapy
- 24. Lỗi trung gian Express 3 không được gọi là
- 25. Cách thêm tiêu đề http vào phần mềm trung gian WSGI?
- 26. Trình ghi nhật ký Rails có thể được truy cập từ bên trong một phần mềm trung gian Rack không?
- 27. Trình bodyParser() trong phần mềm trung gian kết nối làm gì?
- 28. Đo thời gian thực hiện xem trong phần mềm trung gian Django - ý tưởng hay?
- 29. Thêm Node.js (cho thông báo thời gian thực) vào một ứng dụng PHP hiện có
- 30. Đặt một biến trong phần mềm trung gian để truy cập trong mẫu
Cảm ơn - Tôi không nghĩ rằng có một cách (không thể nghĩ ra một cách dễ dàng để nói nó sẽ được đặt ở đâu).Tôi có thể sẽ đi với cách bạn đề xuất lên phía trước. – MrPurpleStreak
chiến thắng lớn cho thấy rằng thứ tự là quan trọng! Cảm ơn! – JWally