Khắc phục sự cố và ghi nhật ký

Việc gỡ lỗi trình chạy dịch vụ rất khó khăn. Bạn sẽ xử lý vòng đời, nội dung cập nhật, bộ nhớ đệm và sự tương tác giữa tất cả những yếu tố này. May mắn thay, giống như Workbox giúp phát triển trình chạy dịch vụ dễ dàng hơn, Workbox cũng giúp gỡ lỗi dễ dàng hơn thông qua tính năng ghi nhật ký chứa nhiều thông tin. Trang này sẽ giới thiệu một số công cụ gỡ lỗi hiện có, cách hoạt động của tính năng ghi nhật ký của Workbox cũng như cách định cấu hình tính năng này.

Các công cụ khắc phục sự cố hiện có

Trình duyệt có sẵn rất nhiều công cụ để gỡ lỗi và khắc phục sự cố khi phát triển một trình chạy dịch vụ. Dưới đây là một số tài nguyên để giúp bạn bắt đầu chọn trình duyệt của mình.

Chrome và Edge

Chrome (và các phiên bản gần đây của Edge dựa trên công cụ Blink) có một bộ công cụ mạnh mẽ cho nhà phát triển. Một số công cụ đó — cụ thể là trong Công cụ cho nhà phát triển của Chrome — đã được đề cập đến trước đó trong tài liệu này, nhưng có thêm một số điều cần khám phá:

Firefox

Người dùng Firefox có thể tham khảo các tài nguyên sau:

Safari

Safari hiện có một bộ công cụ hạn chế hơn cho nhà phát triển để gỡ lỗi trình chạy dịch vụ. Bạn có thể tìm hiểu thêm về chúng qua các tài nguyên sau:

Ghi nhật ký hộp làm việc

Một điểm cải tiến chính về trải nghiệm dành cho nhà phát triển mà Workbox cung cấp là tính năng ghi nhật ký chứa nhiều thông tin. Khi bật tính năng ghi nhật ký, Workbox sẽ ghi nhật ký gần như tất cả hoạt động của mình theo cách riêng biệt và đầy đủ chức năng.

Ảnh chụp màn hình thông báo ghi nhật ký Hộp công việc trong bảng điều khiển của Công cụ cho nhà phát triển của Chrome. Thông báo ghi nhật ký được phân biệt với nhật ký bảng điều khiển thông thường bằng huy hiệu Hộp công việc. Bạn có thể mở rộng mỗi thông báo để nhận thêm thông tin gỡ lỗi.

Các bản dựng phát triển của Workbox sẽ bật tính năng ghi nhật ký theo mặc định, trong khi các bản dựng chính thức thì tắt tính năng này. Có các bước khác nhau để chuyển đổi giữa bản dựng phát triển và bản dựng chính thức, tuỳ vào việc bạn đang tạo gói Workbox tuỳ chỉnh hay sử dụng bản sao được gói sẵn thông qua workbox-sw.

Có hoặc không có trình đóng gói

Trình gói là công cụ lấy mã từ từng mô-đun và tạo đầu ra JavaScript sẵn sàng chạy trong trình duyệt. Khi sử dụng trình đóng gói, bạn cũng có thể dùng một trình bổ trợ Workbox dành riêng cho trình gói để hỗ trợ khả năng lưu trước vào bộ nhớ đệm, chẳng hạn như workbox-webpack-plugin hoặc bạn có thể chỉ gói logic lưu vào bộ nhớ đệm trong thời gian chạy của Workbox. Dù bằng cách nào, việc ghi nhật ký của Workbox cũng chịu ảnh hưởng của việc thiết lập chế độ sản xuất trong cấu hình của trình đóng gói:

  • Trong gói web, bạn có thể đặt tuỳ chọn cấu hình mode thành 'production' hoặc 'development'. workbox-webpack-plugin sẽ sử dụng tính năng ghi nhật ký phát triển hoặc sản xuất trong Workbox dựa trên giá trị này.
  • Đối với Rollup, rollup-plugin-workbox chấp nhận tuỳ chọn cấu hình mode. Tuỳ chọn này cũng ảnh hưởng đến việc Workbox có ghi lại nội dung nào vào bảng điều khiển hay không. Nếu đang sử dụng Rollup mà không có trình bổ trợ dành riêng cho Workbox, bạn cần định cấu hình @rollup/plugin-replace để thay thế process.env.NODE_ENV bằng 'development' hoặc 'production'.

Giả sử hành vi ghi nhật ký mặc định phải được ghi đè trong quá trình phát triển. Trong trường hợp đó, trình bổ trợ Workbox thích hợp cho trình gói sẽ cho phép bạn mã hoá cứng một lựa chọn ưu tiên dùng để gỡ lỗi nhật ký trong cấu hình của trình bổ trợ đó. Ví dụ: bạn có thể tắt tính năng ghi nhật ký trong Workbox thông qua tuỳ chọn mode của workbox-webpack-plugin cho phương thức GenerateSW.

Không có trình đóng gói

Mặc dù các trình đóng gói là sự lựa chọn tuyệt vời, nhưng không phải dự án nào cũng cần chúng. Nếu muốn thêm Workbox vào một dự án không sử dụng trình gói, bạn nên sử dụng workbox-sw.

Mô-đun workbox-sw đơn giản hoá việc tải các mô-đun Workbox khác (ví dụ: workbox-routing, workbox-precaching, v.v.) từ một CDN. Việc việc này có tải các gói phát triển hoặc phát hành chính thức hay không tuỳ thuộc vào URL dùng để truy cập vào ứng dụng web của bạn. Theo mặc định, workbox-sw sẽ tải phiên bản phát triển của Workbox nếu ứng dụng web của bạn đang chạy trên http://localhost, và phiên bản phát hành chính thức tại mọi thời điểm khác.

Bạn có thể ghi đè hành vi mặc định bằng cách gọi phương thức setConfig của Workbox để đặt tuỳ chọn debug thành true:

// Load workbox-sw from a CDN
importScripts('https://storage.googleapis.com/workbox-cdn/releases/6.2.0/workbox-sw.js');

// This must come before any other workbox.* methods.
workbox.setConfig({
  debug: true
});

// Now use workbox.routing.*, workbox.precaching.*, etc.

Tắt tính năng ghi nhật ký trong các bản dựng phát triển trong bất kỳ quy trình làm việc nào

Cho dù có sử dụng trình gói hay không, bạn đều có thể tắt tất cả tính năng ghi nhật ký trong các bản dựng phát triển bằng cách chỉ định true cho một biến self.__WB_DISABLE_DEV_LOGS đặc biệt vào trình chạy dịch vụ:

//
self.__WB_DISABLE_DEV_LOGS = true;

// The rest of your Workbox service worker code goes here

Một ưu điểm của phương pháp này là hoàn toàn độc lập với cấu hình trình đóng gói của bạn và sẽ hoạt động cho dù bạn sử dụng trực tiếp workbox-sw hay phụ thuộc vào một trình gói để đóng gói trình chạy dịch vụ được Workbox hỗ trợ cho bạn.

Thông tin khác

Nếu bạn vẫn đang gặp khó khăn trong việc tìm hiểu điều gì đang xảy ra với một trình chạy dịch vụ lỗi và việc ghi nhật ký vẫn chưa đủ, hãy thử đăng câu hỏi lên Stack Overflow bằng thẻ workbox. Nếu bạn không tìm thấy câu trả lời ở đó, hãy gửi vấn đề trên GitHub (sau khi đọc nguyên tắc đóng góp). Việc này không chỉ cho phép nhiều đối tượng nhà phát triển đọc và trả lời câu hỏi của bạn, mà câu trả lời cho câu hỏi của bạn có thể giúp ích cho những người gặp phải trường hợp tương tự sau này.