JavaScript/Node.js'deki 'require is not define' Hatası Nasıl Çözülür?

Javascript Node Js Deki Require Is Not Define Hatasi Nasil Cozulur



Programlama yolculuğu sırasında sözdizimi hataları veya çalışma zamanı hataları gibi farklı hatalarla karşılaşabiliriz. Referans hatası bir çalışma zamanı hatasıdır. Başlatılmamış bir değişkene veya mevcut kapsamda bulunmayan bir değişkene referans verildiğinde referans hatası oluşur. “Require tanımlı değil” hatası, “require” anahtar kelimesiyle ilgili bir sorun olduğunu gösteren bir referans hatasıdır.

Bu makalede, bu hatanın oluşma nedenleri ve bunu düzeltmenin yolları ayrıntılı olarak anlatılmaktadır.

JavaScript/Node.js'deki “require is not define” Hatası Nasıl Çözülür?

Node.js ortamı yerine web tarayıcısında çalıştırılması gereken JavaScript dosyasında require() işlevi bulunduğunda “require bulunamadı” referans hatası ortaya çıkıyor.







require() İşlevi nedir?

require() işlevi global bir kapsama sahiptir ve Node.js tarafından verilmektedir. Node.js uygulamasındaki modülleri yükler ve çalıştırır. Birçok tarayıcı Node.js'yi desteklemediğinden require() işlevi onlarda mevcut değildir.



Bu Hata Ne Zaman Oluşur?

Bu hata genellikle her iki tarayıcıda da Node.js ile birlikte JavaScript kullanıldığında ortaya çıkar. Hata üç şekilde ortaya çıkabilir:



  • Tarayıcı ortamında require() işlevi kullanıldığında.
  • Node.js ve package.json dosyasında require() işlevi kullanıldığında tür “module” olarak ayarlanır
  • Node.js'de require() işlevi kullanıldığında dosyalar .mjs uzantısına sahip olur.

Const sözdizimini kullanma “ dosyam = require('./dosyam') ” web tabanlı bir ortamda şuna benzeyen bir hata verecektir:





Bu hatayı çözmek için farklı çözümleri tartışalım.



Durum 1: Tarayıcı Ortamındaki Hata

require() işlevi özellikle Node.js'de çalışır. Çoğu tarayıcı Node.js ile uyumlu olduğundan require() işlevini desteklemez. ES6 modülü içe aktarma modülü 'ReferenceError gereksinimi tanımlanmadı' hatasını çözer. Aşağıda bunun nasıl yapılabileceğini gösteren bir kod örneği verilmiştir:

DOCTYPE HTML'si >

< vücut >





< komut dosyası türü = 'modül' kaynak = 'index.js' > senaryo >

< komut dosyası türü = 'modül' kaynak = 'dosya.js' > senaryo >

vücut >

HTML >

İşlevlerinin file.js'de kullanılabilmesi için önce Index.js yüklenir.

index.js dosyası

index.js bir fonksiyon çarpımını ve x ile y değişkenlerini tanımlar:

ihracat fonksiyonu ürünü ( a, b ) {

geri dönmek A * B ;

}

ihracat yapı = 10 ;

ihracat yapı Ve = 'taylor'

dosya.js

index.js dosyasındaki işlevler file.js adlı diğer js dosyasında kullanılabilir. File.js şuna benzer:

içe aktarmak { çarpım, x, y } itibaren './index.js' ;

konsol. kayıt ( ürün ( 10 , 5 ) ) ; // 50 değerini gösterecek

konsol. kayıt ( X ) ; // 10'u gösterecek

konsol. kayıt ( Ve ) ; // 'TAYLOR' görüntülenecek

Çıktı

Aşağıdaki çıktı, tarayıcı ortamında 'gerekli tanımlanmadı' hatasının ES6 içe aktarma modülü kullanılarak nasıl kaldırılabileceğini gösterir:

Durum 2: Node.js'de Çalışırken Hata

package.json dosyasında type özelliğinin value modülüyle ayarlanması bu hatayı alıyor. Bu durum, .mjs uzantılı dosyada require() işlevinin kullanılması durumunda da meydana gelebilir.

Modüle ayarlanan type özelliği kaldırıldığında ve .mjs uzantılı herhangi bir dosya .js olarak yeniden adlandırıldığında bu hata ortadan kaldırılabilir.

//paket.json

{

// require() işlevini kullanmak için modüle ayarlanan type özelliğini kaldırın

'tip' : 'modül' ,

}

index.js dosyası

index.js dosyası bir fonksiyon 'ürün'ünü ve değişken kapsamıyla birlikte x ve y değişkenlerini tanımlar. index.js dosyası şu şekilde görünecektir:

fonksiyon ürünü ( a, b ) {

geri dönmek A * B ;

}

küresel. X = 13 ;

küresel. Ve = 'süratli' ;

modülü. ihracat = {

ürün,

} ;

dosya.js

require() anahtar sözcüğünü kullanarak işlev ürününü index.js JS dosyasından alır. File.js dosyası şöyle görünecektir:

yapı { ürün } = gerekmek ( './index.js' ) ;

konsol. kayıt ( ürün ( 10 , 9 ) ) ; // 90 değerini gösterecek

konsol. kayıt ( X ) ; // 13'ü gösterecek

konsol. kayıt ( Ve ) ; // 'hızlı' görüntülenecek

Çıktı

Çıktı, package.json dosyasından module olarak ayarlanan tür özelliğinin kaldırılmasıyla 'Gereksinim bulunamadı' hatasının nasıl çözülebileceğini gösterir:

Hatırlanacak şeyler

  • Bir modülü içe aktarmak için ES6 modülü sözdizimi, modül dosyasının uzantısı hakkında spesifik olmayı gerektirir. JavaScript'in düzgün işlenmesi için dosya türünü bilmesi gerekir.
  • ES6 modülü require() işleviyle aynı anda kullanılamaz.

Çözüm

Tarayıcıda ES6 modülü sözdizimini kullanmak 'gereksinim tanımlanmadı' sorununu çözer; aksi takdirde kod pasajının Node.js'de çalıştırılması gerekir. Hata, bir tarayıcıda require() işlevi kullanıldığında meydana gelir. Bu yazıda “gereksinim tanımlanmadı” sorununun nasıl çözülebileceği bir örnekle ele alındı.