Cách giải quyết lỗi “yêu cầu không được xác định” trong JavaScript/Node.js

Cach Giai Quyet Loi Yeu Cau Khong Duoc Xac Dinh Trong Javascript Node Js



Trong quá trình lập trình, chúng ta có thể gặp phải các lỗi khác nhau như lỗi cú pháp hoặc lỗi thời gian chạy. Lỗi tham chiếu là lỗi thời gian chạy. Lỗi tham chiếu xảy ra khi một biến không được khởi tạo hoặc một biến không tồn tại trong phạm vi hiện tại đã được tham chiếu. Lỗi “require is not known” là lỗi tham chiếu cho biết có vấn đề với từ khóa “require”.

Bài viết này thảo luận chi tiết về lý do xảy ra lỗi này và cách chúng tôi có thể khắc phục.

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

Lỗi tham chiếu “không tìm thấy yêu cầu” xảy ra khi tìm thấy hàm require() trong tệp JavaScript được cho là được thực thi trong trình duyệt web thay vì môi trường Node.js.







Hàm require() là gì?

Hàm require() có phạm vi toàn cục và được cung cấp bởi Node.js. Nó tải và chạy các mô-đun trong ứng dụng Node.js. Nhiều trình duyệt không hỗ trợ Node.js nên chức năng require() không có sẵn trong đó.



Khi nào lỗi này xảy ra?

Lỗi này thường xảy ra khi JavaScript được sử dụng trong cả hai trình duyệt cùng với Node.js. Lỗi có thể xảy ra theo ba cách:



  • Khi hàm require() được sử dụng trong môi trường trình duyệt.
  • Khi hàm require() được sử dụng trong Node.js và tệp pack.json, loại được đặt thành “mô-đun”
  • Khi hàm require() được sử dụng trong Node.js, các tệp có phần mở rộng là .mjs.

Sử dụng cú pháp const “ myFile = require('./my-file') ” trong môi trường dựa trên web sẽ xuất hiện lỗi như thế này:





Hãy để chúng tôi thảo luận về các giải pháp khác nhau để giải quyết lỗi này.



Trường hợp 1: Lỗi trong môi trường trình duyệt

Hàm require() hoạt động cụ thể trong Node.js. Hầu hết các trình duyệt đều tương thích với Node.js nên chúng không hỗ trợ chức năng require(). Mô-đun xuất nhập mô-đun ES6 giải quyết lỗi 'ReferenceError require is not known'. Đây là một ví dụ về mã cho thấy cách thực hiện:

DOCTYPE html >

< thân hình >





< loại tập lệnh = 'mô-đun' src = 'index.js' > kịch bản >

< loại tập lệnh = 'mô-đun' src = 'tệp.js' > kịch bản >

thân hình >

html >

Index.js được tải trước tiên để có thể sử dụng các chức năng của nó trong file.js.

tập tin index.js

Index.js định nghĩa một hàm sản phẩm và các biến x và y:

sản phẩm chức năng xuất khẩu ( một, b ) {

trở lại Một * b ;

}

xuất khẩu hằng số = 10 ;

xuất khẩu hằng số = 'TAYLOR'

tập tin.js

Các chức năng từ tệp index.js có thể được sử dụng trong tệp js khác có tên là file.js. File.js trông giống như:

nhập khẩu { sản phẩm, x, y } từ './index.js' ;

bảng điều khiển. nhật ký ( sản phẩm ( 10 , 5 ) ) ; // sẽ hiển thị 50

bảng điều khiển. nhật ký ( x ) ; // sẽ hiển thị 10

bảng điều khiển. nhật ký ( ) ; // sẽ hiển thị 'TAYLOR'

đầu ra

Kết quả đầu ra sau đây hiển thị cách có thể loại bỏ lỗi “yêu cầu không được xác định” trong môi trường trình duyệt bằng cách sử dụng mô-đun xuất nhập ES6:

Trường hợp 2: Lỗi khi làm việc với Node.js

Trong tệp pack.json, việc đặt thuộc tính loại bằng mô-đun giá trị sẽ gặp lỗi này. Điều này cũng có thể xảy ra nếu hàm require() được sử dụng trong tệp có phần mở rộng .mjs.

Lỗi này có thể được loại bỏ khi bạn xóa thuộc tính loại được đặt cho mô-đun và bất kỳ tệp nào có phần mở rộng .mjs đều được đổi tên thành .js.

//gói.json

{

// xóa thuộc tính type được đặt cho mô-đun để sử dụng require()

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

}

tập tin index.js

Tệp index.js xác định hàm “sản phẩm” và các biến x và y có phạm vi biến. Tệp index.js sẽ trông như thế này:

sản phẩm chức năng ( một, b ) {

trở lại Một * b ;

}

toàn cầu. x = 13 ;

toàn cầu. = 'nhanh' ;

mô-đun. xuất khẩu = {

sản phẩm,

} ;

tập tin.js

Nó lấy sản phẩm hàm từ tệp JS index.js bằng cách sử dụng từ khóa require(). Tệp file.js sẽ trông như sau:

hằng số { sản phẩm } = yêu cầu ( './index.js' ) ;

bảng điều khiển. nhật ký ( sản phẩm ( 10 , 9 ) ) ; // sẽ hiển thị 90

bảng điều khiển. nhật ký ( x ) ; // sẽ hiển thị 13

bảng điều khiển. nhật ký ( ) ; // sẽ hiển thị 'nhanh'

đầu ra

Kết quả đầu ra hiển thị cách giải quyết lỗi “Không tìm thấy yêu cầu” bằng cách xóa thuộc tính của loại được đặt thành mô-đun khỏi tệp pack.json:

Những điều cần ghi nhớ

  • Cú pháp mô-đun ES6 để nhập mô-đun yêu cầu phải cụ thể về phần mở rộng của tệp mô-đun. JavaScript nên biết loại tệp để xử lý thích hợp.
  • Mô-đun ES6 không thể được sử dụng đồng thời với hàm require().

Phần kết luận

Việc sử dụng cú pháp mô-đun ES6 trong trình duyệt sẽ giải quyết được vấn đề “yêu cầu không được xác định” hoặc nếu không thì đoạn mã phải được chạy trong Node.js. Lỗi xảy ra khi hàm require() được sử dụng trong trình duyệt. Bài viết này thảo luận về cách giải quyết vấn đề “yêu cầu không được xác định” bằng một ví dụ.