Come risolvere l'errore 'require non definito' in JavaScript/Node.js

Come Risolvere L Errore Require Non Definito In Javascript Node Js



Durante il percorso di programmazione, potremmo riscontrare diversi errori come errori di sintassi o errori di runtime. Un errore di riferimento è un errore di runtime. Un errore di riferimento si verifica quando è stato fatto riferimento a una variabile non inizializzata o a una variabile che non esiste nell'ambito presente. L'errore 'require non è definito' è un errore di riferimento che indica che c'è un problema con la parola chiave 'require'.

Questo articolo discute in dettaglio i motivi per cui si verifica questo errore e i modi in cui possiamo risolverlo.

Come risolvere l'errore 'require non definito' in JavaScript/Node.js?

L'errore di riferimento 'require is not find' si verifica quando la funzione require() viene trovata nel file JavaScript che avrebbe dovuto essere eseguito nel browser Web anziché nell'ambiente Node.js.







Cos'è una funzione require()?

La funzione require() ha un ambito globale ed è fornita da Node.js. Carica ed esegue i moduli nell'applicazione Node.js. Molti browser non supportano Node.js quindi la funzionalità require() non è disponibile in essi.



Quando si verifica questo errore?

Questo errore di solito si verifica quando JavaScript viene utilizzato in entrambi i browser insieme a Node.js. L'errore può verificarsi in tre modi:



  • Quando la funzione require() viene utilizzata nell'ambiente del browser.
  • Quando la funzione require() viene utilizzata in Node.js e nel file package.json, il tipo è impostato su 'module'
  • Quando la funzione require() viene utilizzata in Node.js, i file hanno un'estensione .mjs.

Utilizzando la sintassi const “ mioFile = require('./mio-file') ' in un ambiente basato sul Web genererà un errore simile al seguente:





Parliamo di diverse soluzioni per risolvere questo errore.



Caso 1: errore nell'ambiente del browser

La funzione require() funziona specificamente in Node.js. La maggior parte dei browser sono compatibili con Node.js quindi non supportano la funzionalità require(). Il modulo di importazione-esportazione del modulo ES6 risolve l'errore 'ReferenceError require is not definito'. Ecco un esempio di codice che mostra come è possibile farlo:

DOCTYPEhtml >

< corpo >





< tipo di script = 'modulo' src = 'indice.js' > sceneggiatura >

< tipo di script = 'modulo' src = 'file.js' > sceneggiatura >

corpo >

html >

Index.js viene caricato per primo in modo che le sue funzionalità possano essere utilizzate in file.js.

file indice.js

Il file index.js definisce un prodotto di funzione e le variabili x e y:

prodotto con funzione di esportazione ( un, b ) {

ritorno UN * B ;

}

esportare cost = 10 ;

esportare cost E = 'TAYLOR'

file.js

Le funzionalità del file index.js possono essere utilizzate nell'altro file js denominato file.js. File.js ha il seguente aspetto:

importare { prodotto, x, y } da './index.js' ;

consolle. tronco d'albero ( Prodotto ( 10 , 5 ) ) ; // visualizzerà 50

consolle. tronco d'albero ( X ) ; // visualizzerà 10

consolle. tronco d'albero ( E ) ; // visualizzerà 'TAYLOR'

Produzione

L'output seguente mostra come rimuovere l'errore 'require non definito' in un ambiente browser utilizzando il modulo di import-export ES6:

Caso 2: errore durante il lavoro in Node.js

Nel file package.json, l'impostazione della proprietà type con il modulo value ottiene questo errore. Può anche succedere se la funzione require() viene utilizzata nel file con estensione .mjs.

Questo errore può essere rimosso quando si rimuove la proprietà type impostata sul modulo e qualsiasi file con estensione .mjs viene rinominato .js.

//pacchetto.json

{

// rimuove la proprietà type impostata sul modulo per utilizzare require()

'tipo' : 'modulo' ,

}

file indice.js

Il file index.js definisce una funzione 'prodotto' e le variabili xey con l'ambito variabile. Ecco come apparirà il file index.js:

prodotto funzionale ( un, b ) {

ritorno UN * B ;

}

globale. X = 13 ;

globale. E = 'veloce' ;

modulo. esportazioni = {

Prodotto,

} ;

file.js

Prende il prodotto della funzione dal file JS index.js utilizzando la parola chiave require(). Il file file.js sarà simile a:

cost { Prodotto } = richiedere ( './index.js' ) ;

consolle. tronco d'albero ( Prodotto ( 10 , 9 ) ) ; // visualizzerà 90

consolle. tronco d'albero ( X ) ; // visualizzerà 13

consolle. tronco d'albero ( E ) ; // visualizzerà 'rapido'

Produzione

L'output mostra come risolvere l'errore 'Require is not find' rimuovendo la proprietà type set to module dal file package.json:

Cose da ricordare

  • La sintassi del modulo ES6 per importare un modulo richiede di essere specifici sull'estensione del file del modulo. JavaScript dovrebbe conoscere il tipo di file per la sua corretta elaborazione.
  • Il modulo ES6 non può essere utilizzato contemporaneamente alla funzione require().

Conclusione

Utilizzando la sintassi del modulo ES6 nel browser si risolve il problema “require non è definito” altrimenti lo snippet di codice deve essere eseguito in Node.js. L'errore si verifica quando la funzione require() viene utilizzata in un browser. In questo articolo viene illustrato come risolvere il problema 'requisito non definito' con un esempio.