Ce guide explique la procédure de résolution des erreurs « ReferenceError : exiger n'est pas défini ».
- Comment résoudre l'erreur « ReferenceError : exiger n'est pas défini » ?
- Raison 1 : le type d'application est défini sur Module
- Solution : supprimez la touche « Type »
- Raison 2 : Travailler en « .mjs » » Déposer
- Solution : convertissez l'extension de fichier en « .cjs »
- Approche alternative : utilisez la déclaration ES6 « import/export »
Comment résoudre l'erreur « ReferenceError : exiger n'est pas défini » ?
Pour importer des modules externes ou intégrés dans le projet, deux approches sont utilisées, celles-ci utilisent le « exiger() ' méthode ou ' importer ' mot-clé. Le mentionné « ReferenceError : require n'est pas défini ' est rencontré lorsqu'un utilisateur essaie d'utiliser le ' exiger() ' méthode à l'intérieur du ' Module ES ' portée. L'erreur discutée apparaît comme ceci sur la console dans node.js lorsque le code indiqué ci-dessous est exécuté :
Les raisons de l'apparition de l'erreur « Résoudre « ReferenceError : exiger n'est pas défini » et leurs solutions correspondantes sont expliquées dans les sections ci-dessous.
Raison 1 : le type d'application est défini sur Module
Si votre application affiche l'erreur mentionnée, la solution la plus simple et la plus durable est la modification du « package.json ' déposer. Recherchez la paire clé/valeur ayant le « clé ' de ' taper ' et la valeur attribuée de ' module ». Cela rend l'environnement de l'ensemble de l'application modulaire, ce qui évite l'utilisation d'anciens ' CommonJS » modules et méthodes. La représentation visuelle de cette paire clé/valeur apparaît comme ceci :
'taper' : 'module' ,
Solution : supprimez la touche « Type »
La solution est la suppression du « taper « clé et valeur attribuée du projet node.js » package.json ' déposer. La suppression du fichier « package.json » exploite la portée du module ES6 et rend la méthode « require() » réalisable. Désormais, lorsque le même code sera à nouveau exécuté, aucune erreur ne se produira.
Raison 2 : Travailler en « .mjs » » Déposer
Le ' .mjs » est un fichier de code source JavaScript du module. Il contient du code à l'intérieur de l'environnement du module et non dans ' CommonJS ' qui divise le code en plusieurs fichiers pour une meilleure gestion. Le ' exiger() ' La méthode se trouve sous le ' CommonJS ». C'est pourquoi la méthode « require » deviendra indéfinie lorsqu'elle sera utilisée dans le fichier « .mjs ' extension de fichier et conduit à l'apparition de l'erreur mentionnée :
Solution : convertissez l'extension de fichier en « .cjs »
Tout comme le code source JavaScript modulaire, l'extension de fichier « .mjs ' est disponible. La prolongation de « .cjs » est prévu pour « CommonJS » modules et propriétés. Ce fichier n'accepte pas ' modulaire « des forfaits comme » importer ' mais fonctionne bien avec les versions ES5. Dans notre cas, la modification de l’extension du fichier résoudra le problème lié au « exiger() ' méthode:
Approche alternative : utilisez la déclaration ES6 « import/export »
Le ' exiger() » est définie et fournie par la méthode « CommonJs » et est acceptable jusqu'à la version JavaScript d'ES5 (ECMAScript 5). Il a été publié en 2009 et est désormais devenu obsolète car de nombreux modules récents ne le prennent pas en charge ou ne fonctionnent pas correctement dans ES5. Tout comme le ' exiger() « La méthode est désormais remplacée par une méthode plus optimisée et plus simple » importer » déclarations. Le fonctionnement des deux entités est le même, mais « l'importation » a un avantage supérieur en raison de la dernière technologie et de la plus grande facilité qu'elle offre.
Pour les modules par défaut ou externes
Dans la démonstration ci-dessous, l'instruction « import » est utilisée comme alternative à la méthode « require() » pour importer le module par défaut ou tiers :
importer readlineObj depuis 'lire la ligne' ;console. enregistrer ( readlineObj ) ;
Après compilation du code mentionné, la même tâche qui doit être effectuée par le « exiger() ' est exécutée et la méthode ' ReferenceError : require n'est pas défini ' n'apparaîtra pas non plus :
Pour les modules construits sur mesure
Le ' importer ' L'instruction est également utilisée pour « importer » les modules ou fonctions personnalisés à partir d'autres fichiers résidant dans le même répertoire ou dans des répertoires différents. Les fonctions ou variables d'autres fichiers sont exportées à l'aide du ' exporter ' mot-clé. Par exemple, visitez l'extrait de code ci-dessous dans lequel une seule fonction et une variable aléatoire vont être importées depuis un autre fichier :
app.js
const variable d'exportation = « Ce guide est fourni par Linuxhint ! » ;const fonctionexport = ( ) => {
console. enregistrer ( variable d'exportation ) ;
} ;
exporter défaut fonctionexport ;
exporter {
variable d'exportation
} ;
L'explication du bloc de code ci-dessus est la suivante :
- Premièrement, la variable aléatoire nommée « variable d'exportation ' est défini et la fonction flèche ' fonctionexport() ' est créé et imprime le ' exportVariable ' créé sur la console.
- Les mots-clés de « exportation par défaut ' et ' exporter » sont utilisés pour exporter le « fonctionexport() ' et ' variable d'exportation ' entités du fichier.
- Lorsque ce fichier est importé, la fonction et les variables exportées deviennent disponibles pour y être utilisées.
index.js
Le « index.js » est notre fichier secondaire dans lequel la fonction et la variable exportées vont être importées et utilisées, il contient le code indiqué ci-dessous :
importer fonction d'exportation, { variable d'exportation } depuis './app.js' ;fonctionexport ( ) ;
console. enregistrer ( variable d'exportation ) ;
Dans le code ci-dessus, le ' importer ' L'instruction est utilisée pour importer la valeur par défaut ' fonctionexport() ' et la variable ' variable d'exportation ' du ' app.js ' déposer.
Ensuite, les deux entités importées sont invoquées et affichées sur la console à des fins de vérification.
Maintenant, exécutez le principal ' index.js 'fichier en utilisant la commande indiquée ci-dessous :
indice de nœud. jsLa sortie générée montre que les éléments importés fonctionnent correctement sans provoquer le message « ReferenceError : require n'est pas défini ' erreur:
Il s’agit de résoudre l’erreur spécifiée.
Conclusion
Pour résoudre le « ReferenceError : require n'est pas défini ' erreur, supprimez le ' taper ' clé ayant la valeur de ' module ' du ' package.json ' ou modifiez l'extension du fichier actuellement en cours de travail en ' .cjs ». Si vous souhaitez travailler dans la version modulaire ES6, au lieu d'utiliser le ' exiger() ' utilisez la méthode ' importer ' Les déclarations approchent. Ce guide a expliqué les correctifs possibles pour résoudre le problème « ReferenceError : require n'est pas défini 'erreur' dans node.js