Aquesta guia explica el procediment per resoldre els errors 'ReferenceError: require is not defined'.
- Com resoldre l'error 'ReferenceError: require is not defined'?
- Motiu 1: el tipus d'aplicació s'estableix en Mòdul
- Solució: traieu la clau 'Tipus'.
- Raó 2: treballant a “.mjs ” Dossier
- Solució: Converteix l'extensió de fitxer a '.cjs'
- Enfocament alternatiu: utilitzeu la declaració ES6 'importar/exportar'
Com resoldre l'error 'ReferenceError: require is not defined'?
Per importar mòduls externs o integrats al projecte s'utilitzen dos enfocaments, aquests utilitzen el ' requerir () mètode ' o ' importar ” paraula clau. L'esmentat ' ReferenceError: require no està definit ' s'enfronta quan un usuari intenta utilitzar el ' requerir () ' mètode dins del ' ÉS module ” àmbit. L'error comentat apareix així a la consola a node.js quan s'executa el codi que s'indica a continuació:
A les seccions següents s'expliquen els motius de l'aparició de l'error 'Resolució de l'error de referència: no s'ha definit' i les seves solucions corresponents.
Motiu 1: el tipus d'aplicació s'estableix en Mòdul
Si la vostra aplicació mostra l'error esmentat, la solució més fàcil i de llarga durada és la modificació del ' package.json ' dossier. Cerqueu el parell clau/valor que tingui el ' clau ' de ' tipus ” i el valor assignat de “ mòdul ”. Això fa que l'entorn de tota l'aplicació sigui modular, cosa que impedeix l'ús d'antigues ' Comú JS ” mòduls i mètodes. La representació visual d'aquest parell clau/valor apareix així:
'tipus' : 'mòdul' ,
Solució: traieu la clau 'Tipus'.
La solució és l'eliminació del ' tipus 'clau i valor assignat del projecte node.js' package.json ' dossier. L'eliminació del fitxer 'package.json' explota l'abast del mòdul ES6 i fa que el mètode 'require() sigui viable. Ara, quan torni a executar el mateix codi, no hi haurà cap error.
Raó 2: treballant a “.mjs ” Dossier
El ' .mjs ” és un fitxer de codi font JavaScript del mòdul. Conté codi dins de l'entorn del mòdul no a ' Comú JS ” que divideix el codi en diversos fitxers per a una millor gestió. El ' requerir () 'El mètode es troba sota el ' Comú JS ”. És per això que el mètode 'requereix' quedarà sense definir quan s'utilitzi dins del ' .mjs ” i condueix a l'aparició de l'error esmentat:
Solució: Converteix l'extensió de fitxer a '.cjs'
Igual que el codi font modular de JavaScript, l'extensió de fitxer de ' .mjs ' està disponible. L'extensió de ' .cjs ' està previst per ' Comú JS ” mòduls i propietats. Aquest fitxer no accepta “ modular 'paquets com ' importar ” però funciona bé amb les versions ES5. En el nostre cas, la modificació de l'extensió del fitxer resoldrà el problema relacionat amb el ' requerir () ” mètode:
Enfocament alternatiu: utilitzeu la declaració ES6 'importar/exportar'
El ' requerir () 'El mètode està definit i proporcionat pel ' Js comuns ” i és acceptable fins a la versió de JavaScript d'ES5 (ECMAScript 5). Es va publicar l'any 2009 i ara ha quedat obsolet, ja que molts mòduls més recents no l'admeten o no funcionen correctament a ES5. Igual que el ' requerir () 'El mètode ara s'està substituint per un mètode més optimitzat i fàcil' importar ” declaracions. El funcionament d'ambdues entitats és el mateix però la 'importació' té un avantatge superior a causa de l'última tecnologia i més facilitat que ofereix.
Per a mòduls per defecte o externs
A la demostració següent, la instrucció 'import' s'utilitza com a alternativa al mètode 'require()' per importar el mòdul predeterminat o de tercers:
importar readlineObj des de 'línea de lectura' ;consola. registre ( readlineObj ) ;
Després de la compilació del codi esmentat, la mateixa tasca que ha de fer el ' requerir () es realitza el mètode ' i ReferenceError: require no està definit ” no apareixerà també:
Per a mòduls personalitzats
El ' importar La declaració també s'utilitza per 'importar' els mòduls o funcions personalitzats d'altres fitxers que resideixen al mateix directori o en diferents directoris. Les funcions o variables d'altres fitxers s'exporten mitjançant el ' exportar ” paraula clau. Per exemple, visiteu el fragment de codi següent en el qual s'importarà una funció única i una variable aleatòria d'un altre fitxer:
app.js
const exportar variable = 'Aquesta guia la proporciona Linuxhint!' ;const exportFunction = ( ) => {
consola. registre ( exportar variable ) ;
} ;
exportar per defecte exportFunction ;
exportar {
exportar variable
} ;
L'explicació del bloc de codi anterior és la següent:
- Primer, la variable aleatòria anomenada ' exportar variable ' es defineix i la funció de fletxa ' exportFunction() ' es crea que imprimeix la 'exportVariable' creada a la consola.
- Les paraules clau de ' exporta per defecte ' i ' exportar ' s'utilitzen per exportar el ' exportFunction() ' i ' exportar variable ” entitats del fitxer.
- Quan s'importa aquest fitxer, la funció exportada i les variables estan disponibles per utilitzar-hi.
index.js
El 'index.js' és el nostre fitxer secundari en el qual s'importarà i utilitzarà la funció exportada i la variable, conté el codi que s'indica a continuació:
importar funció d'exportació, { exportar variable } des de './app.js' ;exportFunction ( ) ;
consola. registre ( exportar variable ) ;
En el codi anterior, el ' importar ” s'utilitza per importar el valor predeterminat “ exportFunction() ' i la variable ' exportar variable ' de la ' app.js ' dossier.
Aleshores, les dues entitats importades s'invoquen i es mostren a la consola amb finalitats de verificació.
Ara, executeu el principal ' index.js ” amb l'ordre indicat a continuació:
índex de nodes. jsLa sortida generada mostra que els elements importats funcionen correctament sense provocar el ' ReferenceError: require no està definit ” error:
Això es tracta de resoldre l'error especificat.
Conclusió
Per resoldre el ' ReferenceError: require no està definit ' error, elimineu el ' tipus clau ' que té el valor ' mòdul ' de la ' package.json ' o modifiqueu l'extensió de fitxer que treballa actualment a ' .cjs ”. Si voleu treballar a la versió modular ES6, en comptes d'utilitzar el ' requerir () ', utilitza el mètode ' importar ” s'acosta a les declaracions. Aquesta guia ha explicat les possibles solucions per resoldre el ' ReferenceError: require no està definit 'error' a node.js