Corriger asynchrone en fonction d'exportation dans node.js
J'ai eu mon module personnalisé avec le code suivant:
module.exports.PrintNearestStore = async function PrintNearestStore(session, lat, lon) {
...
}
Il a bien fonctionné si l'appel de la fonction à l'extérieur de mon module, cependant si j'ai appelé à l'intérieur je suis d'erreur lors de l'exécution:
(noeud:24372) UnhandledPromiseRejectionWarning: non Gérée promesse
rejet (rejet de l'id: 1): ReferenceError: PrintNearestStore n'est pas
défini
Quand j'ai changé de syntaxe:
module.exports.PrintNearestStore = PrintNearestStore;
var PrintNearestStore = async function(session, lat, lon) {
}
Il a commencé à fonctionner à l'intérieur du module, mais ne parvient pas à l'extérieur du module - je suis d'erreur:
(noeud:32422) UnhandledPromiseRejectionWarning: non Gérée promesse
rejet (rejet de l'id: 1): TypeError: mymodule.PrintNearestStore est
pas une fonction
J'ai donc changé le code pour:
module.exports.PrintNearestStore = async function(session, lat, lon) {
await PrintNearestStore(session, lat, lon);
}
var PrintNearestStore = async function(session, lat, lon) {
...
}
Et maintenant il fonctionne dans tous les cas: à l'intérieur et à l'extérieur. Toutefois veulent comprendre la sémantique et si il y a de plus beau et le plus court chemin pour l'écrire? Comment définir correctement et utiliser async fonction à la fois: à l'intérieur et à l'extérieur (exportations) module?
OriginalL'auteur Aleksey Kontsevich | 2017-10-12
Vous devez vous connecter pour publier un commentaire.
Erreur avec premier cas:
PrintNearestStore
- expression de Fonction, de sorte que ce nom n'est pas disponible à l'extérieur.erreur avec second cas: l'utilisation de la variable, au lieu de déclaration de Fonction. Dans ce cas, la déclaration de la variable PrintNearestStore sont hissés, vous pouvez donc utiliser ce nom avant ligne
var PrintNearestStore = ...
, mais dans ce cas, la valeur serait undefined.Donc, la solution la plus simple changement dans la deuxième variante, comme ceci:
module.exports
.nan, ma solution fonctionne comme prévu: repl.il/M8Jn
Comme je l'ai dit ci-dessus j'ai eu
UnhandledPromiseRejectionWarning
pour code nœud 8.6. J'ai mis définition de la fonction d'abord, puismodule.exports
à corriger.pour la détection d'erreur dans votre cas, nous devrions avoir un Minimum, Complètes et Vérifiables exemple, comme moi ci-dessus
Ne vous inquiétez pas, tout est résolu: voir réponse ci-dessus. Vous pouvez supprimer le Vôtre.
OriginalL'auteur Grundy