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