Bí quyết xử lý và cải thiện về error trên NodeJS


1061

Lời giới thiệu

Giống như bất kỳ loại ứng dụng nào khác , ứng dụng NodeJS cũng phải được viết tốt.

Nếu không, chúng ta sẽ gặp phải tất cả các vấn đề sau này.

Trong bài viết này, chúng ta sẽ xem xét một số phương pháp hay nhất mà chúng ta nên làm theo khi viết ứng dụng NodeJS.

Xử lý Error NodeJS

Nếu có bất kỳ khả năng nào xảy ra lỗi với một đoạn code, chúng ta nên xử lý error đúng cách

Ví dụ, nếu có một sự thay đổi của promise, chúng ta nên gọi hàm catch với callback xử lý error của trình xử lý lỗi được truyền vào nó.

Chúng ta có thể viết như sau:

doSomething()
  .then(doNextStage)
  .then(doMoreThins)
  .then(updateInterestedParties)
  .then(cleanUp)
  .catch(errorHandler);

Chúng ta có phương thức catch với hàm callback errorHandler được truyền vào nó.

Lệnh callback sẽ được gọi khi bất kỳ promise nào trong chuỗi phát sinh lỗi.

Đảm bảo app luôn tự động khởi động lại

Chúng ta nên đảm bảo rằng ứng dụng NodeJS luôn tự động khởi động lại.

Bằng cách này, chúng ta sẽ không phải tự mình thực hiện việc này khi ứng dụng gặp lỗi không được khắc phục.

Chúng ta cần một trình quản lý quy trình như Nodemon, forever, hoặc PM2 để thực hiện việc này.

2 libary cuối cùng là để sử dụng cho production.

Nodemon được sử dụng để phát triển thường xuyên hơn.

Ví dụ, chúng ta có thể cài đặt PM2 trên toàn cầu với:

npm install pm2 -g

Sau đó, chúng ta có thể khởi chạy ứng dụng NodeJS của mình với:

pm2 start app.js

Tạo nhóm cho app NodeJS để nâng cao hiệu suất và độ tin cậy

Chúng ta  có thể tạo  ứng dụng của mình để có nhiều hơn một phiên bản của nó.

Bằng cách này, chúng ta có thể phân phối công việc trên tất cả các core.

Chúng ta cần điều này vì các ứng dụng NodeJS chạy trong một quy trình duy nhất.

PM2 cho phép chúng ta làm điều này dễ dàng bằng cách chạy câu  lệnh sau:

pm2 start app.js -i max

Điều này cho phép chúng ta chạy nhiều quy trình tương đương với số core trong máy chủ.

Các quy trình không chia sẻ bộ nhớ hoặc resources(tài nguyên).

Tất cả chúng sẽ có kết nối riêng với cơ sở dữ liệu

Do đó, chúng ta nên sử dụng một cái gì đó như Redis để giữ trạng thái phiên trên tất cả các trường hợp.

Đặt require tất cả dependency lên trên cùng

Bạn nên đặt tất cả các lệnh gọi require ở trên app NodeJS để chúng ta không phải tìm kiếm chúng trong các phần khác nhau của code.

Ngoài ra, chúng ta có thể phát hiện bất kỳ vấn đề nào với chúng sớm hơn.

Ví dụ, chúng ta có thể viết:

pm2 start app.js -i max

Đặt require ở trên cùng để chúng ta chạy tất cả chúng sớm hơn.

Nếu có bất kỳ lỗi nào, chúng sẽ được loại bỏ ngay từ đầu.

Ngoài ra, require là đồng bộ, vì vậy nếu mất nhiều thời gian để chạy, nó sẽ giữ ứng dụng của chúng ta.

Nếu có bất kỳ vấn đề nào như vậy, sẽ phát hiện sớm nếu chúng ta require sớm.

Sử dụng Thư viện Logging để lưu trữ và hiển thị Error

Sử dụng Thư viện ghi nhật ký để tăng khả năng hiển thị lỗi

Error có thể xảy ra trong bất kỳ môi trường nào.

Và chúng ta muốn chúng được hiển thị có thể fix chúng.

console.log rất hạn chế sử dụng trong setting của product.

Thư viện logging tốt hơn có thể cho nhiều quyền kiểm soát hơn đối với cách ghi log thông thường.

Chúng ta có thể có nhiều kiểu ghi logging khác nhau hoặc lưu dữ liệu ở đâu đó.

Một số thư viện tốt bao gồm Loggly và Winston. Winston là package cơ sở để ghi log cơ bản.

Và Node-Loggly sử dụng Winston để ghi log.

Bằng cách này, chúng ta sẽ thấy error ở một vị trí trung tâm có thể tìm kiếm được.

Kết luận

Việc xử lý lỗi có thể được thực hiện dễ dàng với một vài thay đổi đối với code. Chúng ta nên bắt lỗi và ghi lại chúng để có thể sửa chữa chúng.

Tham khảo thêm về NodeJS tại đây : 7 Framework JavaScript tốt nhất để tung hoành năm 2020


Like it? Share with your friends!

1061