Kā atrisināt kļūdu “prasība nav definēta” JavaScript/Node.js

Ka Atrisinat Kludu Prasiba Nav Defineta Javascript Node Js



Programmēšanas laikā mēs varam saskarties ar dažādām kļūdām, piemēram, sintakses vai izpildlaika kļūdām. Atsauces kļūda ir izpildlaika kļūda. Atsauces kļūda rodas, ja ir sniegta atsauce uz neinicializētu mainīgo vai mainīgo, kas pašreizējā tvērumā nepastāv. Kļūda “require is notdefined” ir atsauces kļūda, kas norāda, ka ir problēma ar atslēgvārdu “require”.

Šajā rakstā ir detalizēti aplūkoti šīs kļūdas rašanās iemesli un veidi, kā to novērst.

Kā atrisināt kļūdu “prasība nav definēta” JavaScript/Node.js?

Atsauces kļūda “require nav atrasts” rodas, ja funkcija request() tiek atrasta JavaScript failā, kas bija jāizpilda tīmekļa pārlūkprogrammā, nevis Node.js vidē.







Kas ir prasība() funkcija?

Funkcijai request() ir globāls tvērums, un to nodrošina Node.js. Tas ielādē un palaiž moduļus lietojumprogrammā Node.js. Daudzas pārlūkprogrammas nepalīdz Node.js, tāpēc funkcionalitāte prasīt () tajās nav pieejama.



Kad šī kļūda notiek?

Šī kļūda parasti rodas, ja JavaScript tiek izmantots abās pārlūkprogrammās kopā ar Node.js. Kļūda var rasties trīs veidos:



  • Kad pārlūkprogrammas vidē tiek izmantota funkcija request().
  • Ja failā Node.js un failā package.json tiek izmantota funkcija request(), tips tiek iestatīts uz “module”
  • Ja failā Node.js tiek izmantota funkcija request(), failu paplašinājums ir .mjs.

Izmantojot sintakse const ' myFile = prasīt('./mans-fails') ” tīmekļa vidē parādīs kļūdu, kas izskatās šādi:





Apspriedīsim dažādus risinājumus šīs kļūdas novēršanai.



1. gadījums: kļūda pārlūkprogrammas vidē

Funkcija request() darbojas īpaši vietnē Node.js. Lielākā daļa pārlūkprogrammu ir saderīgas ar Node.js, tāpēc tās neatbalsta prasību() funkcionalitāti. ES6 moduļa importa eksporta modulis atrisina kļūdu “ReferenceError request nav definēts”. Šeit ir koda piemērs, kas parāda, kā to var izdarīt:

DOCTYPE html >

< ķermenis >





< skripta veids = 'modulis' src = 'index.js' > skripts >

< skripta veids = 'modulis' src = 'fails.js' > skripts >

ķermenis >

html >

Vispirms tiek ielādēts Index.js, lai failā file.js varētu izmantot tā funkcijas.

index.js failu

Index.js definē funkcijas produktu un mainīgos x un y:

eksporta funkcijas produkts ( a, b ) {

atgriezties a * b ;

}

eksportēt konst = 10 ;

eksportēt konst un = 'TAILORS'

fails.js

Faila index.js funkcijas var izmantot citā js failā, kas nosaukts kā file.js. File.js izskatās šādi:

imports { produkts, x, y } no './index.js' ;

konsole. žurnāls ( produkts ( 10 , 5 ) ) ; // parādīs 50

konsole. žurnāls ( x ) ; // parādīs 10

konsole. žurnāls ( un ) ; // parādīs 'TAYLOR'

Izvade

Šī izvade parāda, kā pārlūkprogrammas vidē kļūdu “nepieciešams nav definēts” var noņemt, izmantojot ES6 importa eksporta moduli:

2. gadījums: kļūda, strādājot pakalpojumā Node.js

Failā package.json, iestatot tipa rekvizītu ar vērtību moduli, tiek parādīta šī kļūda. Tas var notikt arī tad, ja failā ar paplašinājumu .mjs tiek izmantota funkcija request().

Šo kļūdu var noņemt, ja noņemat modulim iestatīto tipa rekvizītu un jebkurš fails ar paplašinājumu .mjs tiek pārdēvēts par .js.

//package.json

{

// noņemiet tipa rekvizītu, kas iestatīts modulim, lai izmantotu prasību ()

'tips' : 'modulis' ,

}

index.js failu

Fails index.js definē funkciju “product” un mainīgos x un y ar mainīgā darbības jomu. Lūk, kā izskatīsies fails index.js:

funkcionāls produkts ( a, b ) {

atgriezties a * b ;

}

globāli. x = 13 ;

globāli. un = 'ātrs' ;

modulis. eksportu = {

produkts,

} ;

fails.js

Tas paņem funkcijas produktu no JS faila index.js, izmantojot atslēgvārdu request(). Fails file.js izskatīsies šādi:

konst { produkts } = pieprasīt ( './index.js' ) ;

konsole. žurnāls ( produkts ( 10 , 9 ) ) ; // parādīs 90

konsole. žurnāls ( x ) ; // parādīs 13

konsole. žurnāls ( un ) ; // parādīs 'swift'

Izvade

Izvade parāda, kā kļūdu “Require is not found” var novērst, no faila package.json noņemot modulim iestatītā tipa rekvizītu:

Lietas, kas jāatceras

  • ES6 moduļa sintaksei moduļa importēšanai ir jābūt konkrētai moduļa faila paplašinājumam. Lai pareizi apstrādātu, JavaScript ir jāzina faila tips.
  • ES6 moduli nevar izmantot vienlaikus ar prasību() funkciju.

Secinājums

Izmantojot ES6 moduļa sintaksi pārlūkprogrammā, tiek atrisināta problēma “prasība nav definēta”, pretējā gadījumā koda fragments ir jāpalaiž pakalpojumā Node.js. Kļūda rodas, ja pārlūkprogrammā tiek izmantota funkcija request(). Šajā rakstā tika apspriests, kā ar piemēru var atrisināt problēmu “prasība nav definēta”.