Bagaimana untuk Menyelesaikan Ralat 'referenceerror require is not definition'?

Bagaimana Untuk Menyelesaikan Ralat Referenceerror Require Is Not Definition



Node.js bukanlah apa-apa dengan sendirinya, kewujudannya bergantung pada modul dan kaedah yang disediakan oleh setiap modul. Untuk bekerja dengan modul ini, pembangun mesti memasangnya dahulu dan kemudian mengimportnya ke dalam fail yang sedang berfungsi. Untuk mengimport modul terdapat dua cara yang dikaitkan secara khusus dengan versi JavaScript yang sedang digunakan oleh pembangun atau yang ingin dibina oleh pemilik aplikasi. Semasa mengimport terdapat peluang untuk menghadapi berbilang ralat dan satu ralat popular dan paling biasa yang berkaitan dengan ' memerlukan() ” kaedah sedang diterangkan dan diselesaikan.

Panduan ini menerangkan prosedur untuk menyelesaikan ralat 'ReferenceError: require is not definition'.

Bagaimana untuk Menyelesaikan Ralat 'ReferenceError: require is not definition'?

Untuk mengimport modul luaran atau terbina dalam dalam projek dua pendekatan digunakan, ini menggunakan ' memerlukan() ' kaedah atau ' import ” kata kunci. Yang disebut ' ReferenceError: memerlukan tidak ditakrifkan ” dihadapi apabila pengguna cuba menggunakan “ memerlukan() ' kaedah di dalam ' modul ES ” skop. Ralat yang dibincangkan muncul seperti ini pada konsol dalam node.js apabila kod yang dinyatakan di bawah dilaksanakan:









Sebab-sebab berlakunya ralat 'Selesaikan 'ReferenceError: require is not definition' dan penyelesaian yang sepadan diterangkan dalam bahagian di bawah.



Sebab 1: Jenis Aplikasi Ditetapkan kepada Modul

Jika aplikasi anda memaparkan ralat yang disebutkan, penyelesaian yang paling mudah dan lama ialah pengubahsuaian ' package.json ” fail. Cari pasangan kunci/nilai yang mempunyai “ kunci 'daripada' taip ” dan nilai yang diperuntukkan bagi “ modul ”. Ini menjadikan persekitaran keseluruhan aplikasi modular, yang menghalang penggunaan ' CommonJS ” modul dan kaedah. Perwakilan visual pasangan kunci/nilai ini kelihatan seperti ini:





'jenis' : 'modul' ,

Penyelesaian: Keluarkan Kekunci 'Jenis'.

Penyelesaiannya ialah penyingkiran ' taip ” kunci dan nilai yang diberikan daripada projek node.js “ package.json ” fail. Pembuangan daripada fail 'package.json' mengeksploitasi skop modul ES6 dan menjadikan kaedah 'require() boleh dilaksanakan. Sekarang, apabila kod yang sama dilaksanakan semula, tidak akan berlaku ralat.



Sebab 2: Bekerja di “.mjs Fail

' .mjs ” ialah fail kod sumber JavaScript Modul. Ia mengandungi kod di dalam persekitaran modul bukan dalam ' CommonJS ” yang membahagikan kod kepada berbilang fail untuk kebolehurusan yang lebih baik. ' memerlukan() ' kaedah terletak di bawah ' CommonJS ”. Itulah sebabnya kaedah 'memerlukan' akan menjadi tidak ditentukan apabila digunakan di dalam ' .mjs ” sambungan fail dan membawa kepada berlakunya ralat yang disebutkan:

Penyelesaian: Tukar Sambungan Fail kepada '.cjs'

Sama seperti kod sumber JavaScript modular sambungan fail ' .mjs ' boleh didapati. Lanjutan daripada “ .cjs ” disediakan untuk “ CommonJS ” modul dan sifat. Fail ini tidak menerima “ modular ” pakej seperti “ import ” tetapi berfungsi dengan baik dengan versi ES5. Dalam kes kami, sambungan fail yang berubah-ubah akan menyelesaikan isu yang berkaitan dengan ' memerlukan() ' kaedah:

Pendekatan Alternatif: Gunakan Pernyataan ES6 'import/eksport'

' memerlukan() ' kaedah ditakrifkan dan disediakan oleh ' CommonJs ” dan boleh diterima sehingga versi JavaScript ES5(ECMAScript 5). Ia telah diterbitkan pada tahun 2009 dan kini telah menjadi usang kerana banyak modul terkini tidak menyokongnya atau tidak berfungsi dengan betul dalam ES5. Sama seperti ' memerlukan() Kaedah ' kini digantikan dengan kaedah yang lebih optimum dan mudah ' import ” kenyataan. Kerja kedua-dua entiti adalah sama tetapi 'import' mempunyai kelebihan atas kerana teknologi terkini dan lebih banyak kemudahan yang disediakan olehnya.

Untuk Modul Lalai atau Luaran

Dalam demonstrasi di bawah, pernyataan 'import' digunakan sebagai alternatif kepada kaedah 'require()' untuk mengimport modul lalai atau pihak ketiga:

import readlineObj daripada 'garis baca' ;

konsol. log ( readlineObj ) ;

Selepas penyusunan kod yang disebutkan, tugas yang sama yang perlu dilakukan oleh ' memerlukan() ' kaedah dilakukan dan ' ReferenceError: memerlukan tidak ditakrifkan ” tidak akan muncul juga:

Untuk Modul Binaan Tersuai

' import pernyataan ” juga digunakan untuk “mengimport” modul atau fungsi binaan tersuai daripada fail lain yang berada dalam direktori yang sama atau berbeza. Fungsi atau pembolehubah daripada fail lain dieksport menggunakan ' eksport ” kata kunci. Sebagai contoh, lawati coretan kod di bawah yang mana satu fungsi dan pembolehubah rawak akan diimport daripada fail lain:

app.js

const exportVariable = 'Panduan Ini Disediakan oleh Linuxhint!' ;

const exportFunction = ( ) => {

konsol. log ( exportVariable ) ;

} ;

eksport lalai exportFunction ;

eksport {

exportVariable

} ;

Penjelasan blok kod di atas adalah seperti berikut:

  • Pertama, pembolehubah rawak bernama ' exportVariable ' ditakrifkan dan fungsi anak panah ' exportFunction() ” dicipta yang mencetak “exportVariable” yang dicipta di atas konsol.
  • Kata kunci ' eksport lalai ” dan “ eksport ' digunakan untuk mengeksport ' exportFunction() ” dan “ exportVariable ” entiti daripada fail.
  • Apabila fail ini diimport, fungsi dan pembolehubah yang dieksport tersedia untuk digunakan di sana.

index.js

'index.js' ialah fail kedua kami di mana fungsi dan pembolehubah yang dieksport akan diimport dan digunakan, ia mengandungi kod yang dinyatakan di bawah:

import exportFunction, { exportVariable } daripada './app.js' ;

exportFunction ( ) ;

konsol. log ( exportVariable ) ;

Dalam kod di atas, ' import pernyataan ' digunakan untuk mengimport lalai ' exportFunction() 'dan pembolehubah' exportVariable ' daripada ' app.js ” fail.

Kemudian, kedua-dua entiti yang diimport dipanggil dan dipaparkan pada konsol untuk tujuan pengesahan.

Sekarang, laksanakan utama ' index.js ” fail menggunakan arahan yang dinyatakan di bawah:

indeks nod. js

Output yang dihasilkan menunjukkan bahawa elemen yang diimport berfungsi dengan betul tanpa menyebabkan ' ReferenceError: memerlukan tidak ditakrifkan ” ralat:

Itu sahaja tentang menyelesaikan ralat yang ditentukan.

Kesimpulan

Untuk menyelesaikan ' ReferenceError: memerlukan tidak ditakrifkan ' ralat, keluarkan ' menaip kunci ” yang mempunyai nilai “ modul ' daripada ' package.json ” atau ubah suai sambungan fail yang sedang berfungsi kepada “ .cjs ”. Sekiranya anda ingin bekerja dalam versi modular ES6 maka bukannya menggunakan ' memerlukan() ' kaedah menggunakan ' import ” pendekatan kenyataan. Panduan ini telah menerangkan kemungkinan pembetulan untuk menyelesaikan ' ReferenceError: memerlukan tidak ditakrifkan ” ralat” dalam node.js