Comment résoudre les erreurs « Impossible de trouver le module » ou « Impossible de trouver le package » lorsque j'exécute du code Lambda dans Node.js ?

Lecture de 3 minute(s)
0

Je reçois le message d'erreur « Impossible de trouver le module » ou « Impossible de trouver le package » lorsque j'exécute le code AWS Lambda dans Node.js.

Brève description

Si votre environnement Lambda ne trouve pas la bibliothèque spécifiée dans le code Node.js, vous recevez l'une de ces erreurs. Ces erreurs se produisent car Lambda n'est pas pré-empaqueté avec toutes les bibliothèques Node.js.

  • S'il manque un module avec CommonJS, vous recevez le message d'erreur suivant : Erreur du module Runtime.Import : Erreur: Impossible de trouver le module.
  • S'il manque un module avec JavaScript ES6, le message d'erreur suivant s'affiche : Erreur [ERR_MODULE_NOT_FOUND] : Le package est introuvable.

Pour résoudre ces erreurs, créez un package de déploiement ou une couche Lambda qui inclut les bibliothèques que vous souhaitez utiliser dans votre code Node.js.

Pour les environnements d'exécution Node.js 16 et antérieurs, Lambda ne prend pas en charge les dépendances en couches du module JavaScript ES. Vous devez inclure les dépendances dans le déploiement.
Lambda prend en charge les dépendances du module JavaScript ES pour Node.js 18.

Procédez comme suit pour créer une couche Lambda. Créez une couche Lambda au lieu d'un package de déploiement afin de pouvoir réutiliser la couche dans plusieurs fonctions Lambda. Chaque environnement d'exécution Lambda ajoute des dossiers de répertoire /opt spécifiques à la variable PATH. Si la couche utilise la même structure de dossiers, le code de votre fonction Lambda peut accéder au contenu de la couche sans spécifier le chemin.

**Important :**La bibliothèque que vous importez pour Node.js doit se trouver dans la structure de dossiers nodejs/node\ _modules.

Résolution

Il est recommandé de créer une couche Lambda sur le même système d'exploitation que celui sur lequel repose votre environnement d'exécution Lambda. Par exemple, toutes les versions de Node.js sont basées sur Amazon Linux 2 Amazon Machine Images (AMI).

Créez une couche Lambda pour une bibliothèque Node.js :

1.    Créez une instance Amazon Elastic Compute Cloud (Amazon EC2) à partir d'une AMI Amazon Linux 2.

2.    Créez un rôle AWS Identity and Access Management (IAM) avec les autorisations nécessaires pour appeler l'API publish-layer-version. Ensuite, attachez le rôle IAM à l'instance EC2.

**Remarque :**Votre instance EC2 est désormais autorisée à charger des couches Lambda pour l'appel d'API publish-layer-version.

3.    Connectez-vous à votre instance EC2, puis installez Node.js :

$ curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.34.0/install.sh | bash
$ . ~/.nvm/nvm.sh
$ nvm install node

4.    Créez un dossier nodejs :

$ mkdir nodejs

5.    Installez la bibliothèque aws-xray-sdk dans le dossier nodejs :

$ cd nodejs
$ npm init  ***answer all queries regarding initialization that create a package.json file***
$ npm install --save aws-xray-sdk

**Remarque :**Remplacez la bibliothèque d'exemple aws-xray-sdk par la bibliothèque Node.js que vous souhaitez importer.

6.    Créez une archive zip pour la bibliothèque aws-xray-sdk :

$ zip -r layer.zip nodejs

**Remarque :**La bibliothèque aws-xray-sdk est au format de dossier requis pour une couche Node.js : nodejs/node_module.

7.    Publiez la couche Lambda :

$ aws lambda publish-layer-version --layer-name xray --zip-file fileb://layer.zip --compatible-runtimes nodejs12.x --region us-east-1

**Remarque :**Pour ajouter des modules ECMAScript 6 (ES6) ou CommonJS dans votre code lu, consultez JavaScript ES6/CommonJS syntax.

Informations connexes

Comment résoudre les erreurs « autorisation refusée » ou « Impossible d'importer le module » lors du téléchargement d'un package de déploiement Lambda ?

AWS OFFICIEL
AWS OFFICIELA mis à jour il y a un an