Jak rozwiązać błąd „wymaganie nie jest zdefiniowane” w JavaScript/Node.js

Jak Rozwiazac Blad Wymaganie Nie Jest Zdefiniowane W Javascript Node Js



Podczas programowania możemy napotkać różne błędy, takie jak błędy składniowe lub błędy czasu wykonywania. Błąd odniesienia to błąd wykonania. Błąd odniesienia występuje, gdy odwołano się do niezainicjowanej zmiennej lub zmiennej, która nie istnieje w bieżącym zakresie. Błąd „wymaganie nie jest zdefiniowane” to błąd odniesienia, który wskazuje, że wystąpił problem ze słowem kluczowym „wymagaj”.

W tym artykule szczegółowo omówiono przyczyny wystąpienia tego błędu i sposoby jego naprawienia.

Jak rozwiązać błąd „wymaganie nie jest zdefiniowane” w JavaScript/Node.js?

Błąd referencyjny „require not found” ma miejsce w przypadku odnalezienia funkcji require() w pliku JavaScript, który miał zostać wykonany w przeglądarce internetowej, a nie w środowisku Node.js.







Co to jest funkcja require()?

Funkcja require() ma zasięg globalny i jest udostępniana przez Node.js. Ładuje i uruchamia moduły w aplikacji Node.js. Wiele przeglądarek nie obsługuje Node.js, więc funkcja require() nie jest w nich dostępna.



Kiedy pojawia się ten błąd?

Ten błąd zwykle występuje, gdy w obu przeglądarkach używany jest JavaScript wraz z Node.js. Błąd może wystąpić na trzy sposoby:



  • Gdy w środowisku przeglądarki używana jest funkcja require().
  • Gdy funkcja require() jest używana w Node.js i pliku package.json, typ jest ustawiony na „module”
  • Gdy w Node.js używana jest funkcja require(), pliki mają rozszerzenie .mjs.

Używając składni const „ mójPlik = wymagaj („./mój-plik”) ” w środowisku internetowym spowoduje wyświetlenie błędu wyglądającego następująco:





Omówmy różne rozwiązania, aby rozwiązać ten błąd.



Przypadek 1: Błąd w środowisku przeglądarki

Funkcja require() działa szczególnie w Node.js. Większość przeglądarek jest kompatybilna z Node.js, więc nie obsługują funkcji require(). Moduł eksportu importu modułu ES6 rozwiązuje błąd „Wymagany błąd odniesienia nie jest zdefiniowany”. Oto przykład kodu pokazującego, jak można to zrobić:

DOCTYPEhtml >

< ciało >





< typ skryptu = 'moduł' źródło = „indeks.js” > scenariusz >

< typ skryptu = 'moduł' źródło = „plik.js” > scenariusz >

ciało >

HTML >

Najpierw ładowany jest plik Index.js, dzięki czemu jego funkcjonalności można wykorzystać w pliku.js.

plik indeks.js

Index.js definiuje iloczyn funkcji oraz zmienne x i y:

produkt z funkcją eksportu ( a, b ) {

powrót A * B ;

}

eksport konst = 10 ;

eksport konst I = „TAJLOR”

plik.js

Funkcjonalności z pliku Index.js można wykorzystać w innym pliku js o nazwie file.js. Plik.js wygląda następująco:

import { produkt, x, y } z „./index.js” ;

konsola. dziennik ( produkt ( 10 , 5 ) ) ; // wyświetli 50

konsola. dziennik ( X ) ; // wyświetli 10

konsola. dziennik ( I ) ; // wyświetli „TAYLOR”

Wyjście

Poniższe dane wyjściowe pokazują, jak można usunąć błąd „wymaganie nie jest zdefiniowane” w środowisku przeglądarki za pomocą modułu eksportu importu ES6:

Przypadek 2: Błąd podczas pracy w Node.js

W pliku package.json ustawienie właściwości type za pomocą modułu wartości powoduje wystąpienie tego błędu. Może się to również zdarzyć, jeśli w pliku z rozszerzeniem .mjs zostanie użyta funkcja require().

Ten błąd można usunąć, usuwając ustawioną dla modułu właściwość type i zmieniając nazwę dowolnego pliku z rozszerzeniem .mjs na .js.

//pakiet.json

{

// usuń właściwość type ustawioną dla modułu, aby użyć funkcji require()

'typ' : 'moduł' ,

}

plik indeks.js

W pliku Index.js zdefiniowana jest funkcja „produkt” oraz zmienne x i y z zakresem zmiennej. Oto jak będzie wyglądał plik Index.js:

produkt funkcjonalny ( a, b ) {

powrót A * B ;

}

światowy. X = 13 ;

światowy. I = 'szybki' ;

moduł. eksport = {

produkt,

} ;

plik.js

Pobiera produkt funkcji z pliku JS indeks.js za pomocą słowa kluczowego require(). Plik file.js będzie wyglądał następująco:

konst { produkt } = wymagać ( „./index.js” ) ;

konsola. dziennik ( produkt ( 10 , 9 ) ) ; // wyświetli 90

konsola. dziennik ( X ) ; // wyświetli 13

konsola. dziennik ( I ) ; // wyświetli „szybkie”

Wyjście

Dane wyjściowe pokazują, jak można rozwiązać błąd „Nie znaleziono wymagania”, usuwając właściwość typu ustawioną na moduł z pliku package.json:

Rzeczy do zapamiętania

  • Składnia modułu ES6 do importowania modułu wymaga określenia rozszerzenia pliku modułu. JavaScript powinien znać typ pliku, aby móc go poprawnie przetworzyć.
  • Modułu ES6 nie można używać jednocześnie z funkcją require().

Wniosek

Użycie składni modułu ES6 w przeglądarce rozwiązuje problem „wymaganie nie jest zdefiniowane” lub w przeciwnym razie fragment kodu musi zostać uruchomiony w Node.js. Błąd występuje, gdy w przeglądarce używana jest funkcja require(). W tym artykule omówiono, jak na przykładzie można rozwiązać problem „wymagania nie są zdefiniowane”.