Passer au contenu

Pourquoi mon CloudWatch Canary échoue-t-il avec l'erreur « Cannot find module » ?

Lecture de 2 minute(s)
0

Je souhaite résoudre l'erreur « Cannot find module '/opt/nodejs/node_modules/myfunction » dans mon canary Amazon CloudWatch.

Résolution

Votre package de déploiement .zip doit contenir la structure de répertoires requise, avec votre fonction et vos dépendances organisées sous le chemin nodejs/node_modules. Si vous créez un fichier .zip sans cette structure de répertoire requise, le message d'erreur suivant s'affiche :

« Cannot find module '/opt/nodejs/node_modules/myfunction. »

Pour résoudre cette erreur, procédez comme suit :

  1. Exécutez la commande suivante pour créer la structure nodejs/node_modules :

    mkdir -p /nodejs/node_modules/
  2. Copiez votre fonction de canary CloudWatch dans /nodejs/node_modules/ :

    cp CanaryFunction.js /nodejs/node_modules/cp -R /lib /nodejs/node_modules/

    Remarque : Définissez le point d'entrée du script de votre canary sur myCanaryFilename.functionName pour qu'il corresponde au nom de fichier du point d'entrée de votre script. Par exemple, si votre fichier canary est CanaryFunction.js, définissez le gestionnaire sur CanaryFunction.handler.

  3. Pour créer un fichier .zip contenant le contenu du dossier de votre projet en haut du répertoire nodejs, exécutez la commande suivante :

    zip -r Canary.zip ./nodejs/*

Lorsque vous écrivez un script canary contenant plusieurs fichiers .js ou des dépendances de script, regroupez tous les fichiers dans un fichier .zip unique. Utilisez la structure de dossiers nodejs/node_modules. Par exemple, vous pouvez utiliser nodejs/node_modules/myCanaryFilename.js.

AWS OFFICIELA mis à jour il y a 6 mois