Slik løser du 'require is not defined'-feilen i JavaScript/Node.js

Slik Loser Du Require Is Not Defined Feilen I Javascript Node Js



Under programmeringsreisen kan vi støte på forskjellige feil som syntaksfeil eller kjøretidsfeil. En referansefeil er en kjøretidsfeil. En referansefeil oppstår når en ikke-initialisert variabel eller en variabel som ikke eksisterer i det nåværende omfanget er blitt referert. Feilen 'require is not defined' er en referansefeil som indikerer at det er et problem med søkeordet 'require'.

Denne artikkelen diskuterer i detalj årsakene til at denne feilen oppstår og hvordan vi kan fikse den.

Hvordan løser jeg 'require is not defined'-feilen i JavaScript/Node.js?

Referansefeilen 'require is not found' skjer når require()-funksjonen er funnet i JavaScript-filen som skulle kjøres i nettleseren i stedet for Node.js-miljøet.







Hva er en require() funksjon?

require()-funksjonen har et globalt omfang og er gitt av Node.js. Den laster og kjører moduler i Node.js-applikasjonen. Mange nettlesere hjelper ikke Node.js, så require()-funksjonaliteten er ikke tilgjengelig i dem.



Når skjer denne feilen?

Denne feilen oppstår vanligvis når JavaScript brukes i begge nettleserne sammen med Node.js. Feilen kan oppstå på tre måter:



  • Når require()-funksjonen brukes i nettlesermiljøet.
  • Når require()-funksjonen brukes i Node.js og package.json-filen, settes typen til 'module'
  • Når require()-funksjonen brukes i Node.js, har filene filtypen .mjs.

Bruke syntaksen const ' myFile = require(‘./min-fil’) ' i et nettbasert miljø vil gi en feilmelding som ser slik ut:





La oss diskutere forskjellige løsninger for å løse denne feilen.



Tilfelle 1: Feil i nettlesermiljøet

Require()-funksjonen fungerer spesifikt i Node.js. De fleste nettlesere er kompatible med Node.js, så de støtter ikke require()-funksjonaliteten. ES6-modulimporteksportmodul løser feilen 'ReferenceError requires not defined'. Her er et eksempel på en kode som viser hvordan det kan gjøres:

DOCTYPE html >

< kropp >





< skripttype = 'modul' src = 'index.js' > manus >

< skripttype = 'modul' src = 'fil.js' > manus >

kropp >

html >

Index.js lastes først slik at funksjonaliteten kan brukes i file.js.

index.js-filen

Indeks.js definerer et funksjonsprodukt og variabler x og y:

eksportfunksjonsprodukt ( a, b ) {

komme tilbake en * b ;

}

eksport konst = 10 ;

eksport konst og = 'SKREDDER'

file.js

Funksjonalitetene fra index.js-filen kan brukes i den andre js-filen kalt file.js. File.js ser slik ut:

import { produkt, x, y } fra './index.js' ;

konsoll. Logg ( produkt ( 10 , 5 ) ) ; // vil vise 50

konsoll. Logg ( x ) ; // vil vise 10

konsoll. Logg ( og ) ; // vil vise 'TAYLOR'

Produksjon

Følgende utdata viser hvordan feilen 'require is not defined' i et nettlesermiljø kan fjernes ved å bruke ES6-importeksportmodulen:

Tilfelle 2: Feil under arbeid i Node.js

I filen package.json, innstilling av type-egenskapen med verdimodulen får denne feilen. Det kan også skje hvis require()-funksjonen brukes i filen med filtypen .mjs.

Denne feilen kan fjernes når du fjerner type-egenskapen satt til modulen og enhver fil med filtypen .mjs blir omdøpt til .js.

//package.json

{

// fjern type-egenskapen satt til modulen som skal brukes require()

'type' : 'modul' ,

}

index.js-filen

index.js-filen definerer en funksjon 'produkt' og variablene x og y med variabelens omfang. Slik vil index.js-filen se ut:

funksjonsprodukt ( a, b ) {

komme tilbake en * b ;

}

global. x = 1. 3 ;

global. og = 'fort' ;

modul. eksport = {

produkt,

} ;

file.js

Den tar funksjonsproduktet fra JS-filen index.js ved å bruke nøkkelordet require(). File.js-filen vil se slik ut:

konst { produkt } = krever ( './index.js' ) ;

konsoll. Logg ( produkt ( 10 , 9 ) ) ; // vil vise 90

konsoll. Logg ( x ) ; // vil vise 13

konsoll. Logg ( og ) ; // vil vise 'swift'

Produksjon

Utdataene viser hvordan feilen 'Require is not found' kan løses ved å fjerne egenskapen av typen satt til modul fra filen package.json:

Ting å huske

  • ES6-modulsyntaks for å importere en modul krever at du er spesifikk om modulfilens utvidelse. JavaScript bør kjenne filtypen for riktig behandling.
  • ES6-modulen kan ikke brukes samtidig med require()-funksjonen.

Konklusjon

Bruk av ES6-modulsyntaksen i nettleseren løser problemet 'require is not defined', ellers må kodebiten kjøres i Node.js. Feilen oppstår når require()-funksjonen brukes i en nettleser. Denne artikkelen diskuterte hvordan 'krever er ikke definert'-problemet kan løses med et eksempel.