2017-10-12 6 views
4

Je joue avec AWS Lambda à l'aide de Node.js. Après avoir été fatigué d'avoir à faire face à des rappels, je me suis dit que je pouvais utiliser élégamment async/await comme je suis habitué à C#.Utilisation du mot-clé async dans AWS Lambda

exports.handler = async(event, context, callback) => { 
    db = await MongoClient.connect(process.env['MONGODB_URI']); 
} 

Même si cela fonctionne apparemment lors du test hors ligne en utilisant lambda-local, il échoue lamentablement quand téléchargé sur AWS. Il semble que le mot-clé async ne soit pas reconnu. J'utilise le dernier runtime Node.js 6.10 sur AWS alors que ma version locale est 8.5. Y at-il un moyen de contourner ou devrais-je abandonner cette approche et revenir à l'aide de rappels?

Répondre

4

La fonctionnalité async/await a été lancée dans Node.js v7.0 mais était derrière l'indicateur --harmony car elle était expérimentale. Il a été entièrement pris en charge sans le drapeau après Node.js v7.6.

Par conséquent, vous ne pouvez pas utiliser async/await avec Node.js v6.10.

Regardez here pour savoir exactement quelles versions sont prises en charge.

4

Vous pouvez regrouper votre lambda avec webpack et babel pour écrire le code du nœud 8 et déployer le code compatible avec le nœud 6.

La meilleure façon de le faire est d'utiliser le serverless framework avec des plugins comme:

2

Vous pouvez également écrire votre gestionnaire dactylographiée qui peut compiler votre code ES5. Vous pouvez utiliser async/await avec Typescript.