Com resoldre l'error 'requerir no està definit' a JavaScript/Node.js

Com Resoldre L Error Requerir No Esta Definit A Javascript Node Js



Durant el viatge de programació, podem trobar diferents errors com errors de sintaxi o errors d'execució. Un error de referència és un error d'execució. Es produeix un error de referència quan s'ha fet referència a una variable no inicialitzada o una variable que no existeix en l'àmbit actual. L'error 'requerir no està definit' és un error de referència que indica que hi ha un problema amb la paraula clau 'require'.

Aquest article tracta detalladament els motius pels quals es produeix aquest error i les maneres de solucionar-lo.

Com resoldre l'error 'requerir no està definit' a JavaScript/Node.js?

L'error de referència 'require is not found' es produeix quan es troba la funció require() al fitxer JavaScript que se suposava que s'havia d'executar al navegador web en lloc de l'entorn Node.js.







Què és una funció require()?

La funció require() té un abast global i ve donada per Node.js. Carrega i executa mòduls a l'aplicació Node.js. Molts navegadors no ajuden Node.js, de manera que la funcionalitat require() no hi està disponible.



Quan passa aquest error?

Aquest error sol produir-se quan s'utilitza JavaScript als dos navegadors juntament amb Node.js. L'error es pot produir de tres maneres:



  • Quan s'utilitza la funció require() a l'entorn del navegador.
  • Quan s'utilitza la funció require() a Node.js i al fitxer package.json, el tipus s'estableix en 'mòdul'
  • Quan s'utilitza la funció require() a Node.js, els fitxers tenen una extensió de .mjs.

Utilitzant la sintaxi const “ myFile = require('./my-file') ” en un entorn basat en web llançarà un error semblant a aquest:





Parlem de diferents solucions per resoldre aquest error.



Cas 1: error a l'entorn del navegador

La funció require() funciona específicament a Node.js. La majoria dels navegadors són compatibles amb Node.js, de manera que no admeten la funcionalitat require(). El mòdul d'importació d'exportació del mòdul ES6 resol l'error 'ReferenceError require not defined'. Aquí teniu un exemple de codi que mostra com es pot fer:

DOCTYPE html >

< cos >





< tipus de guió = 'mòdul' src = 'index.js' > guió >

< tipus de guió = 'mòdul' src = 'fitxer.js' > guió >

cos >

html >

Index.js es carrega primer perquè les seves funcionalitats es puguin utilitzar a file.js.

fitxer index.js

L'index.js defineix un producte de funció i les variables x i y:

producte amb funció d'exportació ( a, b ) {

tornar a * b ;

}

exportar const = 10 ;

exportar const i = 'TAYLOR'

fitxer.js

Les funcionalitats del fitxer index.js es poden utilitzar a l'altre fitxer js anomenat file.js. File.js s'assembla a:

importar { producte, x, y } des de './index.js' ;

consola. registre ( producte ( 10 , 5 ) ) ; // mostrarà 50

consola. registre ( x ) ; // mostrarà 10

consola. registre ( i ) ; // mostrarà 'TAYLOR'

Sortida

La sortida següent mostra com es pot eliminar l'error 'requerir no està definit' en un entorn de navegador mitjançant el mòdul d'exportació d'importació ES6:

Cas 2: error mentre es treballa a Node.js

Al fitxer package.json, establir la propietat de tipus amb el mòdul de valor obté aquest error. També pot passar si s'utilitza la funció require() al fitxer amb una extensió .mjs.

Aquest error es pot eliminar quan elimineu la propietat de tipus establerta al mòdul i qualsevol fitxer amb una extensió .mjs es canvia el nom de .js.

//package.json

{

// elimina la propietat de tipus establerta al mòdul per utilitzar require()

'tipus' : 'mòdul' ,

}

fitxer index.js

El fitxer index.js defineix una funció 'producte' i les variables x i y amb l'abast de la variable. A continuació es mostra com es veurà el fitxer index.js:

producte de funció ( a, b ) {

tornar a * b ;

}

global. x = 13 ;

global. i = 'ràpid' ;

mòdul. exportacions = {

producte,

} ;

fitxer.js

Pren el producte de funció del fitxer JS index.js mitjançant la paraula clau require(). El fitxer file.js tindrà aquest aspecte:

const { producte } = requereixen ( './index.js' ) ;

consola. registre ( producte ( 10 , 9 ) ) ; // mostrarà 90

consola. registre ( x ) ; // mostrarà 13

consola. registre ( i ) ; // mostrarà 'swift'

Sortida

La sortida mostra com es pot resoldre l'error 'Requerir no es troba' eliminant la propietat de tipus establerta en mòdul del fitxer package.json:

Coses per recordar

  • La sintaxi del mòdul ES6 per importar un mòdul requereix ser específic sobre l'extensió del fitxer del mòdul. JavaScript hauria de conèixer el tipus de fitxer per al seu processament correcte.
  • El mòdul ES6 no es pot utilitzar simultàniament amb la funció require().

Conclusió

L'ús de la sintaxi del mòdul ES6 al navegador resol el problema 'requereix no està definit' o, en cas contrari, el fragment de codi s'ha d'executar a Node.js. L'error es produeix quan s'utilitza la funció require() en un navegador. En aquest article s'explica com es pot resoldre el problema de 'requerir no està definit' amb un exemple.