Cara Menyelesaikan Ralat 'require is not definition' dalam JavaScript/Node.js

Cara Menyelesaikan Ralat Require Is Not Definition Dalam Javascript Node Js



Semasa perjalanan pengaturcaraan, kami mungkin menghadapi ralat yang berbeza seperti ralat sintaks atau ralat masa jalan. Ralat rujukan ialah ralat masa jalan. Ralat rujukan berlaku apabila pembolehubah tidak dimulakan atau pembolehubah yang tidak wujud dalam skop sekarang telah dirujuk. Ralat 'memerlukan tidak ditakrifkan' ialah ralat rujukan yang menunjukkan bahawa terdapat masalah dengan kata kunci 'memerlukan'.

Artikel ini membincangkan secara terperinci sebab ralat ini berlaku dan cara kami boleh membetulkannya.

Bagaimana untuk Menyelesaikan Ralat 'require is not definition' dalam JavaScript/Node.js?

Ralat rujukan 'require is not found' berlaku apabila fungsi require() ditemui dalam fail JavaScript yang sepatutnya dilaksanakan dalam pelayar web dan bukannya persekitaran Node.js.







Apakah Fungsi require()?

fungsi require() mempunyai skop global dan diberikan oleh Node.js. Ia memuatkan dan menjalankan modul dalam aplikasi Node.js. Banyak pelayar tidak membantu Node.js jadi kefungsian require() tidak tersedia di dalamnya.



Bilakah Ralat Ini Berlaku?

Ralat ini biasanya berlaku apabila JavaScript digunakan dalam kedua-dua penyemak imbas bersama-sama dengan Node.js. Ralat boleh berlaku dalam tiga cara:



  • Apabila fungsi require() digunakan dalam persekitaran penyemak imbas.
  • Apabila fungsi require() digunakan dalam Node.js dan fail package.json, jenis ditetapkan kepada 'modul'
  • Apabila fungsi require() digunakan dalam Node.js, fail mempunyai sambungan .mjs.

Menggunakan const sintaks ' myFile = memerlukan(‘./my-file’) ” dalam persekitaran berasaskan web akan membuang ralat yang kelihatan seperti ini:





Mari kita bincangkan penyelesaian yang berbeza untuk menyelesaikan ralat ini.



Kes 1: Ralat dalam Persekitaran Penyemak Imbas

Fungsi require() berfungsi secara khusus dalam Node.js. Kebanyakan penyemak imbas serasi dengan Node.js jadi mereka tidak menyokong fungsi require(). Modul eksport import modul ES6 menyelesaikan ralat 'ReferenceError require is not definition'. Berikut ialah contoh kod yang menunjukkan cara ia boleh dilakukan:

DOCTYPE html >

< badan >





< jenis skrip = 'modul' src = 'index.js' > skrip >

< jenis skrip = 'modul' src = 'file.js' > skrip >

badan >

html >

Index.js dimuatkan dahulu supaya fungsinya boleh digunakan dalam file.js.

fail index.js

index.js mentakrifkan produk fungsi dan pembolehubah x dan y:

produk fungsi eksport ( a, b ) {

kembali a * b ;

}

eksport const = 10 ;

eksport const dan = 'TAYLOR'

file.js

Kefungsian daripada fail index.js boleh digunakan dalam fail js lain yang dinamakan sebagai file.js. File.js kelihatan seperti:

import { produk, x, y } daripada './index.js' ;

konsol. log ( produk ( 10 , 5 ) ) ; // akan memaparkan 50

konsol. log ( x ) ; // akan memaparkan 10

konsol. log ( dan ) ; // akan memaparkan 'TAYLOR'

Pengeluaran

Output berikut memaparkan cara ralat 'require is not definition' dalam persekitaran penyemak imbas boleh dialih keluar dengan menggunakan modul eksport import ES6:

Kes 2: Ralat Semasa Bekerja dalam Node.js

Dalam fail package.json, menetapkan sifat jenis dengan modul nilai mendapat ralat ini. Ia juga boleh berlaku jika fungsi require() digunakan dalam fail dengan sambungan .mjs.

Ralat ini boleh dialih keluar apabila anda mengalih keluar sifat jenis yang ditetapkan pada modul dan mana-mana fail dengan sambungan .mjs dinamakan semula .js.

//package.json

{

// alih keluar set sifat jenis kepada modul untuk digunakan require()

'jenis' : 'modul' ,

}

fail index.js

Fail index.js mentakrifkan fungsi 'produk' dan pembolehubah x dan y dengan skop pembolehubah. Begini rupa fail index.js:

produk fungsi ( a, b ) {

kembali a * b ;

}

global. x = 13 ;

global. dan = 'pantas' ;

modul. eksport = {

produk,

} ;

file.js

Ia mengambil produk fungsi daripada fail JS index.js dengan menggunakan kata kunci require(). Fail file.js akan kelihatan seperti:

const { produk } = memerlukan ( './index.js' ) ;

konsol. log ( produk ( 10 , 9 ) ) ; // akan memaparkan 90

konsol. log ( x ) ; // akan memaparkan 13

konsol. log ( dan ) ; // akan memaparkan 'swift'

Pengeluaran

Output memaparkan bagaimana ralat 'Memerlukan tidak dijumpai' boleh diselesaikan dengan mengalih keluar sifat jenis yang ditetapkan kepada modul daripada fail package.json:

Perkara yang Perlu Diingati

  • Sintaks modul ES6 untuk mengimport modul memerlukan khusus tentang sambungan fail modul. JavaScript harus mengetahui jenis fail untuk pemprosesan yang betul.
  • Modul ES6 tidak boleh digunakan serentak dengan fungsi require().

Kesimpulan

Menggunakan sintaks modul ES6 dalam penyemak imbas menyelesaikan isu 'memerlukan tidak ditakrifkan' atau sebaliknya coretan kod mesti dijalankan dalam Node.js. Ralat berlaku apabila fungsi require() digunakan dalam penyemak imbas. Artikel ini membincangkan cara isu 'memerlukan tidak ditakrifkan' boleh diselesaikan dengan contoh.