Làm cách nào để giải quyết lỗi 'yêu cầu lỗi tham chiếu không được xác định'?

Lam Cach Nao De Giai Quyet Loi Yeu Cau Loi Tham Chieu Khong Duoc Xac Dinh



Bản thân Node.js không là gì cả, sự tồn tại của nó phụ thuộc vào các mô-đun và phương thức do mỗi mô-đun cung cấp. Để làm việc với các mô-đun này, trước tiên nhà phát triển phải cài đặt nó rồi nhập nó vào trong tệp hiện đang làm việc. Để nhập mô-đun, có hai cách được liên kết cụ thể với phiên bản JavaScript mà nhà phát triển hiện đang sử dụng hoặc phiên bản mà chủ sở hữu ứng dụng muốn xây dựng. Trong khi nhập, bạn có thể gặp phải nhiều lỗi và một lỗi phổ biến và phổ biến nhất liên quan đến “ yêu cầu() ” phương pháp đang được mô tả và giải quyết.

Hướng dẫn này giải thích quy trình giải quyết lỗi 'ReferenceError: require is not known'.

Làm cách nào để giải quyết lỗi 'ReferenceError: require is not known'?

Để nhập các mô-đun bên ngoài hoặc tích hợp vào dự án, hai phương pháp được sử dụng, đó là sử dụng “ yêu cầu() ” phương pháp hoặc “ nhập khẩu “từ khóa. Cái được nhắc đến ' ReferenceError: yêu cầu không được xác định ” gặp phải khi người dùng cố gắng sử dụng “ yêu cầu() ” phương thức bên trong “ mô-đun ES ' phạm vi. Lỗi được thảo luận xuất hiện như thế này trên bảng điều khiển trong node.js khi mã nêu bên dưới được thực thi:









Các lý do xảy ra lỗi 'Giải quyết' Lỗi tham chiếu: yêu cầu không được xác định 'và các giải pháp tương ứng của chúng được giải thích trong các phần bên dưới.



Lý do 1: Loại ứng dụng được đặt thành Mô-đun

Nếu ứng dụng của bạn hiển thị lỗi được đề cập, giải pháp dễ dàng và lâu dài nhất là sửa đổi “ gói.json ' tài liệu. Tìm kiếm cặp khóa/giá trị có “ chìa khóa ' của ' kiểu ” và giá trị được gán của “ mô-đun ”. Điều này làm cho môi trường của toàn bộ ứng dụng trở thành mô-đun, ngăn cản việc sử dụng “ CommonJS ” mô-đun và phương pháp. Biểu diễn trực quan của cặp khóa/giá trị này trông như thế này:





'kiểu' : 'mô-đun' ,

Giải pháp: Xóa phím “Type”

Giải pháp là loại bỏ “ kiểu ” khóa và giá trị được gán từ dự án node.js “ gói.json ' tài liệu. Việc xóa khỏi tệp “package.json” sẽ khai thác phạm vi mô-đun ES6 và làm cho phương thức “require()” có thể hoạt động được. Bây giờ, khi mã tương tự được thực thi lại thì sẽ không xảy ra lỗi.



Lý do 2: Làm việc trong “.mjs Tài liệu

Các ' .mjs ” là một tệp mã nguồn Mô-đun JavaScript. Nó chứa mã bên trong môi trường mô-đun không có trong “ CommonJS ” chia mã thành nhiều tệp để quản lý tốt hơn. Các ' yêu cầu() ” phương pháp nằm dưới “ CommonJS ”. Đó là lý do tại sao phương thức “require” sẽ không được xác định khi sử dụng bên trong “ .mjs ” phần mở rộng tệp và dẫn đến xảy ra lỗi được đề cập:

Giải pháp: Chuyển đổi phần mở rộng tệp thành “.cjs”

Giống như mã nguồn JavaScript mô-đun, phần mở rộng tệp của “ .mjs ” có sẵn. Phần mở rộng của “ .cjs ” được cung cấp cho “ CommonJS ” mô-đun và thuộc tính. Tập tin này không chấp nhận “ mô-đun ” các gói như “ nhập khẩu ” nhưng hoạt động tốt với các phiên bản ES5. Trong trường hợp của chúng tôi, phần mở rộng tệp thay đổi sẽ giải quyết vấn đề liên quan đến “ yêu cầu() ' phương pháp:

Phương pháp thay thế: Sử dụng câu lệnh ES6 “nhập/xuất”

Các ' yêu cầu() ” phương thức được xác định và cung cấp bởi “ CommonJs ” và được chấp nhận cho đến phiên bản JavaScript của ES5 (ECMAScript 5). Nó được xuất bản vào năm 2009 và hiện đã trở nên lỗi thời vì nhiều mô-đun mới nhất không hỗ trợ nó hoặc không hoạt động bình thường trong ES5. Cũng giống như “ yêu cầu() ” Phương pháp hiện đang được thay thế bằng phương pháp tối ưu và dễ dàng hơn “ nhập khẩu ' các câu lệnh. Hoạt động của cả hai thực thể đều giống nhau nhưng “nhập khẩu” có lợi thế hơn do công nghệ mới nhất và nó mang lại sự dễ dàng hơn.

Đối với các mô-đun mặc định hoặc bên ngoài

Trong phần minh họa bên dưới, câu lệnh “import” đang được sử dụng thay thế cho phương thức “require()” để nhập mô-đun mặc định hoặc mô-đun của bên thứ ba:

nhập khẩu dòng đọcObj từ 'đọc dòng' ;

bảng điều khiển. nhật ký ( dòng đọcObj ) ;

Sau khi biên dịch mã được đề cập, nhiệm vụ tương tự cần được thực hiện bởi “ yêu cầu() ” phương pháp được thực hiện và “ ReferenceError: yêu cầu không được xác định ” cũng sẽ không xuất hiện:

Dành cho các mô-đun được xây dựng tùy chỉnh

Các ' nhập khẩu Câu lệnh ” cũng được sử dụng để “nhập” các mô-đun hoặc hàm xây dựng tùy chỉnh từ các tệp khác nằm trong cùng thư mục hoặc khác thư mục. Các hàm hoặc biến từ các tệp khác được xuất bằng lệnh “ xuất khẩu “từ khóa. Ví dụ: hãy truy cập đoạn mã bên dưới, trong đó một hàm và một biến ngẫu nhiên sẽ được nhập từ một tệp khác:

ứng dụng.js

hằng số xuất khẩuBiến = 'Hướng dẫn này được cung cấp bởi Linuxhint!' ;

hằng số hàm xuất khẩu = ( ) => {

bảng điều khiển. nhật ký ( xuất khẩuBiến ) ;

} ;

xuất khẩu mặc định hàm xuất khẩu ;

xuất khẩu {

xuất khẩuBiến

} ;

Giải thích về khối mã trên như sau:

  • Đầu tiên, biến ngẫu nhiên có tên “ xuất khẩuBiến ” được xác định và hàm mũi tên “ hàm xuất() ” được tạo để in “exportVariable” đã tạo trên bảng điều khiển.
  • Từ khóa của “ xuất khẩu mặc định ' Và ' xuất khẩu ” được sử dụng để xuất khẩu “ hàm xuất() ' Và ' xuất khẩuBiến ” thực thể từ tệp.
  • Khi tệp này được nhập, hàm và các biến đã xuất sẽ có sẵn để sử dụng ở đó.

chỉ mục.js

“index.js” là tệp phụ của chúng tôi, trong đó hàm và biến đã xuất sẽ được nhập và sử dụng, nó chứa mã được nêu bên dưới:

nhập khẩu chức năng xuất khẩu, { xuất khẩuBiến } từ './app.js' ;

hàm xuất khẩu ( ) ;

bảng điều khiển. nhật ký ( xuất khẩuBiến ) ;

Trong đoạn mã trên, “ nhập khẩu Câu lệnh ” được sử dụng để nhập giá trị mặc định “ hàm xuất() ” và biến “ xuất khẩuBiến ' từ ' ứng dụng.js ' tài liệu.

Sau đó, cả hai thực thể đã nhập đều được gọi và hiển thị trên bảng điều khiển nhằm mục đích xác minh.

Bây giờ, hãy thực hiện phần chính “ chỉ mục.js ” bằng cách sử dụng lệnh đã nêu bên dưới:

chỉ số nút. js

Đầu ra được tạo cho thấy các phần tử đã nhập đang hoạt động chính xác mà không gây ra lỗi “ ReferenceError: yêu cầu không được xác định ' lỗi:

Đó là tất cả về việc giải quyết lỗi được chỉ định.

Phần kết luận

Để giải quyết vấn đề “ ReferenceError: yêu cầu không được xác định ” lỗi, hãy xóa “ kiểu ” khóa có giá trị là “ mô-đun ' từ ' gói.json ” hoặc sửa đổi phần mở rộng tệp hiện đang hoạt động thành “ .cjs ”. Trong trường hợp bạn muốn làm việc với phiên bản mô-đun ES6 thì thay vì sử dụng “ yêu cầu() ” phương pháp sử dụng “ nhập khẩu ” các tuyên bố tiếp cận. Hướng dẫn này đã giải thích các cách khắc phục có thể có để giải quyết “ ReferenceError: yêu cầu không được xác định “lỗi” trong node.js