“Referans hatası gereksinimi tanımlanmadı” Hatası Nasıl Çözümlenir?

Referans Hatasi Gereksinimi Tanimlanmadi Hatasi Nasil Cozumlenir



Node.js tek başına bir şey değildir, varlığı modüllere ve her modülün sağladığı yöntemlere bağlıdır. Bu modüllerle çalışmak için geliştiricinin önce onu kurması ve ardından o anda çalışan dosyanın içine aktarması gerekir. Modülleri içe aktarmak için geliştiricinin şu anda kullandığı veya uygulama sahibinin üzerinde derlemek istediği JavaScript sürümüyle özel olarak bağlantılı iki yol vardır. İçe aktarma sırasında birden fazla hatayla ve ' ile ilgili popüler ve en yaygın hatayla karşılaşma şansı vardır. gerekmek() ” yöntemi anlatılıyor ve çözümleniyor.

Bu kılavuzda 'ReferenceError: require is not define' hatalarının çözümüne ilişkin prosedür açıklanmaktadır.

“ReferenceError: require is not define” Hatası Nasıl Çözümlenir?

Projeye harici veya yerleşik modülleri içe aktarmak için iki yaklaşım kullanılır; bunlar ' gerekmek() ” yöntemi veya “ içe aktarmak ” anahtar kelimesi. Bahsedilen “ ReferenceError: gereksinim tanımlanmadı Bir kullanıcı “kullanmayı denediğinde” ile karşılaşılır gerekmek() “ yönteminin içinde” ES modülü ' kapsam. Aşağıda belirtilen kod çalıştırıldığında tartışılan hata, node.js'deki konsolda şu şekilde görünür:









“Resolve “ReferenceError: require is not define” hatasının oluşma nedenleri ve çözümleri aşağıdaki bölümlerde anlatılmıştır.



Sebep 1: Uygulama Türü Modül Olarak Ayarlanmıştır

Eğer uygulamanız söz konusu hatayı gösteriyorsa en kolay ve uzun vadeli çözüm “ paket.json ' dosya. ''ye sahip anahtar/değer çiftini arayın anahtar ' ile ilgili ' tip ” ve “'in atanan değeri modül ”. Bu, tüm uygulamanın ortamını modüler hale getirerek eski ' CommonJS ” modüller ve yöntemler. Bu anahtar/değer çiftinin görsel temsili şu şekilde görünür:





'tip' : 'modül' ,

Çözüm: “Tür” Anahtarını Kaldır

Çözüm '' ifadesinin kaldırılmasıdır. tip ” node.js projesinden anahtar ve atanan değer” paket.json ' dosya. 'package.json' dosyasından kaldırma işlemi, ES6 modülü kapsamından yararlanır ve 'require() yöntemini kullanılabilir hale getirir. Artık aynı kod tekrar çalıştırıldığında herhangi bir hata oluşmayacaktır.



Sebep 2: “.mjs” ile çalışmak Dosya

.mjs ” bir Modül JavaScript kaynak kodu dosyasıdır. Modül ortamındaki kodu içerir, “ CommonJS ” daha iyi yönetilebilirlik için kodu birden fazla dosyaya böler. “ gerekmek() ” yöntemi “ altında yatıyor CommonJS ”. Bu nedenle “require” metodu “içinde kullanıldığında tanımsız hale gelecektir” .mjs ” dosya uzantısına sahiptir ve belirtilen hatanın ortaya çıkmasına neden olur:

Çözüm: Dosya Uzantısını “.cjs”ye dönüştürün

Tıpkı modüler JavaScript kaynak kodu gibi “” dosya uzantısı .mjs ' gecerli. Uzantısı ' .cjs '' için sağlanmıştır CommonJS ” modüller ve özellikler. Bu dosya kabul etmiyor” modüler ” gibi paketler içe aktarmak ” ancak ES5 sürümleriyle iyi çalışıyor. Bizim durumumuzda dosya uzantısını değiştirmek “” ile ilgili sorunu çözecektir. gerekmek() ' yöntem:

Alternatif Yaklaşım: ES6 “içe/dışa aktarma” Bildirimini kullanın

gerekmek() ” yöntemi “ ile tanımlanır ve sağlanır CommonJ'ler ” ve ES5'in (ECMAScript 5) JavaScript sürümüne kadar kabul edilebilir. 2009'da yayınlandı ve en son modüllerin çoğu onu desteklemediğinden veya ES5'te düzgün çalışmadığından artık geçerliliğini yitirdi. Tıpkı “ gerekmek() “Yöntem artık daha optimize edilmiş ve kolay bir yöntemle değiştiriliyor” içe aktarmak ' ifadeler. Her iki kurumun da işleyişi aynıdır ancak son teknoloji ve sağladığı kolaylık nedeniyle “ithalat” daha avantajlıdır.

Varsayılan veya Harici Modüller için

Aşağıdaki gösterimde, varsayılan veya üçüncü taraf modülünü içe aktarmak için 'require()' yöntemine alternatif olarak 'import' ifadesi kullanılıyor:

içe aktarmak readlineObj itibaren 'okuma satırı' ;

konsol. kayıt ( readlineObj ) ;

Bahsedilen kodun derlenmesinden sonra aynı görevin “ gerekmek() ” yöntemi gerçekleştirilir ve “ ReferenceError: gereksinim tanımlanmadı ” da görünmeyecek:

Özel Yapılandırılmış Modüller İçin

içe aktarmak ' ifadesi aynı zamanda özel yapım modülleri veya işlevleri aynı veya farklı dizinlerde bulunan diğer dosyalardan 'içe aktarmak' için de kullanılır. Diğer dosyalardaki işlevler veya değişkenler “ ihracat ” anahtar kelimesi. Örneğin, tek bir işlevin ve rastgele bir değişkenin başka bir dosyadan içe aktarılacağı aşağıdaki kod parçacığını ziyaret edin:

uygulama.js

yapı ihracatDeğişkeni = 'Bu Kılavuz Linuxhint Tarafından Sağlanmıştır!' ;

yapı dışa aktarmaFonksiyonu = ( ) => {

konsol. kayıt ( ihracatDeğişkeni ) ;

} ;

ihracat varsayılan dışa aktarmaFonksiyonu ;

ihracat {

ihracatDeğişkeni

} ;

Yukarıdaki kod bloğunun açıklaması şu şekildedir:

  • İlk olarak “adlı rastgele değişken ihracatDeğişkeni ” tanımlanır ve ok fonksiyonu “ ihracatFunction() Oluşturulan “exportVariable”ı konsol üzerinden yazdıran bir ifade oluşturulur.
  • Anahtar kelimeler “ varsayılanı dışa aktar ' Ve ' ihracat ',' öğesini dışa aktarmak için kullanılır ihracatFunction() ' Ve ' ihracatDeğişkeni ” dosyadaki varlıklar.
  • Bu dosya içe aktarıldığında, dışa aktarılan işlev ve değişkenler orada kullanılabilir hale gelir.

index.js

“index.js”, dışa aktarılan fonksiyon ve değişkenin içe aktarılıp kullanılacağı ikincil dosyamızdır ve aşağıdaki kodu içerir:

içe aktarmak ihracatFonksiyon, { ihracatDeğişkeni } itibaren './app.js' ;

dışa aktarmaFonksiyonu ( ) ;

konsol. kayıt ( ihracatDeğişkeni ) ;

Yukarıdaki kodda “ içe aktarmak ” ifadesi varsayılanı içe aktarmak için kullanılır ihracatFunction() ” ve değişken “ ihracatDeğişkeni 'dan' uygulama.js ' dosya.

Daha sonra, içe aktarılan her iki varlık da doğrulama amacıyla çağrılır ve konsol üzerinde görüntülenir.

Şimdi ana işlemi yürütün “ index.js ” dosyası aşağıda belirtilen komutu kullanarak:

düğüm indeksi. js

Oluşturulan çıktı, içe aktarılan öğelerin ' ReferenceError: gereksinim tanımlanmadı ' hata:

Hepsi belirtilen hatayı çözmekle ilgili.

Çözüm

' sorununu çözmek için ReferenceError: gereksinim tanımlanmadı ” hatası, “ kaldırın tip '' değerine sahip anahtar modül 'dan' paket.json ” veya şu anda çalışan dosya uzantısını “ olarak değiştirin .cjs ”. ES6 modüler versiyonunda çalışmak istemeniz durumunda “ gerekmek() ' yöntemini kullanın' içe aktarmak ifadeleri yaklaşımı. Bu kılavuz, 'sorunu çözmek için olası düzeltmeleri açıklamıştır' ReferenceError: gereksinim tanımlanmadı node.js'de 'hata'