Trao đổi về dự án
Kiến trúc web

Workers và Node.js: kiểm tra sổ đăng ký mô-đun mới trước khi di chuyển

Cloudflare mở quyền truy cập vào sổ đăng ký mô-đun Workers mới. Hãy tách điều bundler biến đổi, điều runtime phân giải và các hành vi mà dependency của bạn yêu cầu.

Nouveau registre de modules Cloudflare Workers.

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.

Bundler biến đổi một artifact trước khi runtime Workers phân giải các mô-đun.
Xây dựng và phân giải khi thực thi là hai lớp riêng biệt.

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.

DependencyCơ chếTrường hợp đã kiểm traGhi nhậnĐiều chưa chắc chắnQuyết định
Cần điềnCần xác địnhChưa thực thiChưa đo lườngCầ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.

Đánh giá cùng một artifact với sổ đăng ký cũ và sổ đăng ký mô-đun Workers mới.
Quyết định dựa trên các ghi nhận theo dependency, không dựa trên lời hứa phổ quát.

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.

Chia sẻ bài viết