Tôi đang tạo trang web mẫu bằng Express và tôi đã đạt được điều gì đó mà tôi không hiểu rõ.
(Các) phần mềm trung gian xử lý lỗi phải là (các) phần tử cuối cùng trong đường ống, nếu tôi hiểu chính xác. Ví dụ, làm việc tốt:Phần mềm trung gian xử lý lỗi không phải lúc nào cũng hoạt động
var http = require('http');
var express = require('express');
var app = express();
app.set('view engine', 'jade');
app.set('views', './views');
app.use(express.static('./public'));
http.createServer(app).listen(portNumber, function() { });
app.get('/hello', function(req, res) {
res.send('Welcome!');
});
app.use(function(err, req, res, next) {
res.status(500).send('something broke!');
});
app.get('/error', function(req, res, next) {
somethingNonExistent(2016);
});
Tuy nhiên, nếu tôi đăng ký middleware rằng trước khi http.createServer cuộc gọi, nhưng sau khi tất cả middlewares khác đã được đăng ký, nó sẽ không làm việc - mã của tôi không được gọi:
var http = require('http');
var express = require('express');
var app = express();
app.use(express.static('./public'));
app.use(function(err, req, res, next) {
res.status(500).send('something broke!');
});
http.createServer(app).listen(portNumber, function() { });
app.get('/hello', function(req, res) {
res.send('Welcome!');
});
app.get('/error', function(req, res, next) {
somethingNonExistent(2016);
});
Tôi đã bỏ lỡ điều gì ở đây? Đoán của tôi là app.get cuộc gọi sử dụng một số middleware nội bộ và nó bị rối tung lên.
Tôi sử dụng Express 3.2.6 và Node.js 0.10.29, nếu điều đó tạo ra bất kỳ sự khác biệt nào
xin vui lòng bình luận về các downvotes – chester89
Tôi không chắc chắn về downvotes, nhưng những gì ngăn cản tôi từ bất kỳ thời gian để trả lời là mã không liên quan thêm. Cách tốt nhất để nhận câu trả lời là đăng trường hợp sử dụng đơn giản nhất mà bạn có thể đưa ra, chứ không phải đăng toàn bộ ứng dụng của bạn. Không ai thực sự thích gỡ lỗi, hãy để một mình gỡ lỗi mã của người khác. Bạn không cần bàn điều khiển đăng nhập cổng, thiết lập cấu hình môi trường, toán học để tính toán độ dài của một ngày, vv 'var app = express(); app.use (một cái gì đó); app.get ("/ hello", ...);/* nỗ lực của bạn khi xử lý lỗi */' – cdbajorin
@cdbajorin được thực hiện. Tôi sẽ cập nhật bài đăng – chester89