2017-07-26 2 views
1

Encore une fois je busting b *** s ... Je suis désolé de devoir revenir à vous les gars, mais je trouve l'information disponible en ligne très confuse et ne peut pas sembler Trouver une réponse appropriée à mon problème. Donc, si l'un de vous les magiciens/dieux du Nœud pouvait m'aider, j'apprécierais grandement. J'essaye d'exporter une variable qui cède d'une promesse à un autre module. Voici mon code:NodeJS Async/Await Exportation d'une variable

Le principal:

//app.js <--- This is where I need the variable exported. 

var sp1 = require('./module'); 

var somePromise2 = new Promise((resolve, reject) => { 
    resolve('Hey! It worked the second time!'); 
}); 


async function exec() { 
    const message1 = await sp1.msg 
    const message2 = await somePromise2 
    console.log('Success', message1, message2); 
} 

exec() 

et le module avec la promesse:

//module.js 

var somePromise1 = new Promise((resolve, reject) => { 
    var msg = ''; 
    resolve(msg = 'Hey! It worked!'); 
}); 

module.exports = { 
    somePromise1, 
} 

Comme vous pouvez le voir le somePromise1, est en fait la même chose que somePromise2 mais dans un autre module. Chose est, je ne peux apparemment pas obtenir la variable msg à exporter, il donne un indéfini (si je fais tout en local: dans le même fichier, cela fonctionne sans problème).

Merci d'avance pour votre aide et désolé à l'avance si vous trouvez qu'il s'agit d'une copie d'une question existante ... J'ai été crawlé depuis hier pour une réponse et déplacé le code mais rien ne semble s'appliquer .. .

+1

Vous n'êtes pas exporter la variable 'msg'. Vous exportez uniquement la promesse 'somePromise1'. –

Répondre

2

Vous avez une erreur dans l'importation et une erreur en utilisant la promesse:

//app.js <--- This is where I need the variable exported. 

var sp1 = require('./module').somePromise1; 

var somePromise2 = new Promise((resolve, reject) => { 
    resolve('Hey! It worked the second time!'); 
}); 


async function exec() { 
    const message1 = await sp1; 
    const message2 = await somePromise2; 
    console.log('Success', message1, message2); 
} 

exec() 
+0

Ça a marché! Pourrait m'aider un peu plus avec les pourquoi? Je veux dire, pourquoi ai-je besoin d'ajouter '.somePromise1' et ne pas simplement spécifier './module'? – Ardzii

+1

Désolé, merci un million! (btw) – Ardzii

+1

@Ardzii Je recommande que vous lisiez un bon article sur l'importation/exportation: https://www.sitepoint.com/understanding-module-exports-exports-node-js/ –