Cloudflare mở quyền truy cập vào một sổ đăng ký mô-đun mới cho Workers. Trước khi suy ra rằng ứng dụng Node.js của bạn có thể di chuyển mà không cần thích ứng, cần xác định bundler biến đổi gì, runtime phân giải gì và các dependency thực sự yêu cầu những hành vi nào.
Sổ đăng ký mới thay đổi điều gì
Ngày 9 tháng 9 năm 2026, Cloudflare công bố một sổ đăng ký mô-đun Workers được xây dựng lại, có thể truy cập bằng cờ cấu hình rõ ràng new_module_registry. Bài công bố mô tả đặc biệt import.meta.url, import.meta.main, import.meta.resolve(), các URL specifier, require(esm) và biên dịch trì hoãn; phần triển khai trước đó vẫn có sẵn. Đây là những khả năng do Cloudflare công bố, không phải bằng chứng về khả năng tương thích chung với Node.js. [nguồn Cloudflare]
Cờ này phải được thêm vào danh sách tương thích hiện có, không được thay thế danh sách đó. Một cấu hình kiểm thử có thể thêm new_module_registry vào danh sách hiện hữu; nó không phải một lệnh triển khai.
{ "compatibility_flags": ["new_module_registry"] }
Đoạn trích này chỉ cho biết cờ cần thêm. Nó không thay thế tệp cấu hình hoàn chỉnh hoặc các cờ đã có.
Tách bundler khỏi runtime
Bundler, công cụ tập hợp các tệp mã, có thể loại bỏ, biến đổi hoặc gộp một import trước khi nó đến runtime. Vì vậy, một import nhìn thấy trong source không chứng minh sổ đăng ký sẽ phân giải nó. Hãy kiểm tra artifact được tạo và ghi lại chế độ xây dựng, phiên bản cùng các tùy chọn trước khi kết luận về một thay đổi runtime. Sự phân tách này bổ sung cho bài viết của chúng tôi về chuỗi xây dựng.
Xây dựng các ca kiểm thử giới hạn và có thể quan sát
Hãy chuẩn bị một ví dụ nhỏ cô lập, hay fixture, cho mỗi cơ chế: URL mô-đun có tham số và fragment, import.meta.resolve(), import động, ranh giới giữa mô-đun JavaScript ESM và CommonJS (hai định dạng nạp) và lỗi nạp. Tài liệu workerd mô tả thiết kế sổ đăng ký; để tái lập một kiểm thử, hãy ghim tham chiếu a42a33b0d43d80b9554d3f9d7f04c153d6b0c45f thay vì dùng một nhánh thay đổi. [tham chiếu workerd đã ghim]
Các ví dụ dưới đây và các tệp tài liệu của chúng là một đề xuất kiểm thử; chúng chưa được thực thi trong Workers. Chúng không đưa ra bất kỳ kết quả mong đợi nào được bịa sẵn. Một thất bại cần được kiểm tra: nó có thể đến từ dependency, quá trình xây dựng, định dạng ESM/CommonJS hoặc môi trường, chứ không chỉ từ sổ đăng ký.
// url-meta.mjs — exemple documentaire non exécuté dans Workers
export const currentUrl = import.meta.url;
export const isMain = import.meta.main;
export const resolved = import.meta.resolve("./url-meta.mjs?mode=test#fixture");
// Comparer séparément les identités et les erreurs avec chaque registre.
export async function loadVariant() {
return import("./url-meta.mjs?mode=dynamic#fixture");
}
Quy trình phải ghi lại URL, vai trò điểm vào, danh tính các instance và lớp lỗi. Hãy cũng giữ một trường hợp mô-đun vắng mặt và một trường hợp nạp CommonJS của mô-đun ESM. Chỉ kiểm tra cú pháp không xác nhận bất kỳ hành vi nào trong số này ở Workers.
| Dependency | Cơ chế | Trường hợp đã kiểm tra | Ghi nhận | Điều chưa chắc chắn | Quyết định |
|---|---|---|---|---|---|
| Cần điền | Cần xác định | Chưa thực thi | Chưa đo lường | Cần đánh giá | Cần quyết định |
So sánh mà không nhầm lẫn runtime và dependency
Hãy dùng cùng artifact, cùng dependency và cùng đầu vào trong hai cấu hình được ghi chép: sổ đăng ký trước đó và kích hoạt kiểm thử. Hãy lưu nhật ký, assertion và các biến đổi bundle nếu có. So sánh này không hứa hẹn bất kỳ mức tăng tốc độ nào hay một cuộc di chuyển tự động; nó chỉ cô lập biến số được nghiên cứu.
Hãy cũng chuẩn bị việc quay lại trong môi trường kiểm thử: chỉ gỡ cờ đã thêm, giữ các cờ khác và ghi lại tiêu chí cho phép tiếp tục hoặc dừng. Khả năng tương thích Workers được chứng minh theo ứng dụng, dependency và hành vi được sử dụng.