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.