Je continue à avoir cette erreur dans la console aws-lambda lors du téléchargement du code à partir d'un fichier Zip. J'ai essayé de télécharger d'autres fichiers Zip et ils fonctionnent correctement. Le fichier .js s'appelle "CreateThumbnail.js" dans le fichier Zip. Je crois que le gestionnaire est également nommé correctement "CreateThumbnail.handler". le sous-répertoire node_modules est également configuré. Quelqu'un a quelquonque idée?
{
"errorMessage": "Cannot find module 'CreateThumbnail'",
"errorType": "Error",
"stackTrace": [
"Function.Module._resolveFilename (module.js:338:15)",
"Function.Module._load (module.js:280:25)",
"Module.require (module.js:364:17)",
"require (module.js:380:17)"
]
}
La façon dont j'ai pu obtenir que cela fonctionne est la suivante:
Ok, je l'ai fait moi-même. Assurez-vous simplement de créer le fichier Zip de sorte que le fichier .js ne se retrouve pas dans un dossier, car AWS décompresserait le fichier que vous téléchargiez et essayait de trouver un fichier .js portant le nom suivant. gestionnaire que vous avez donné, et si cela se trouve dans un dossier, cela ne vous aidera pas.
Cette erreur peut apparaître si vos fichiers compressés n’ont pas l’autorisation de lecture dans le monde entier. (chmod -R ugo+r
).
Vérifiez les autorisations de fichiers avant qu'ils ne soient compressés. Malheureusement, AWS n’a pas insisté sur ce point et cela a causé beaucoup de maux de tête à beaucoup.
Certains fichiers de bibliothèque peuvent ne pas avoir de lecture globale, de sorte que lambda ne sera pas en mesure de lire le contenu et de le créer.
Assurez-vous que tous les fichiers dans node_modules
sont lisibles avant l’emballage:
chmod -R +r node_modules
Puis Zip et télécharger.
J'ai eu ce problème sur un module personnalisé que j'avais construit et qui se trouvait dans le répertoire node_modules. Tout a fonctionné correctement lors des tests sur mon ordinateur Win10, mais lors de la mise en ligne, le message d'erreur "module introuvable 'n'a pas été trouvé.
Il s'est avéré que j'avais un désaccord. voici la ligne package.json du module introuvable:
"main": "./build/modulename.js",
et voici le nom de fichier réel:
Modulename.js
Sensible aux majuscules et minuscules; Windows n'est pas, linux (et donc AWS) l'est.
Cela s'est avéré être simple pour moi.
Je devenais, ne peux pas créer d'index. dans mon cas, mon fichier principal lambda avec le exports.handler devait s'appeler index.js
Essayez d’appeler votre fichier principal CreateThumbnail.js
Nom de fichier:
app.js
Fonction lambda dans "app.js":
exports.handler = fonction (événement, contexte) ...
Gestionnaire Lambda sur Amazon Console:
app.handler ({app} .js + exports. {handler} = app.handler)
Lorsque vous décompressez le dossier, vous devriez voir:
app.js
node_modules
Le tutoriel vous indique d’inclure les éléments suivants dans votre fichier Zip:
CreateThumbnail.js
/node_modules/gm
/node_modules/async
Ce qu’elle omet de prendre en compte, c’est qu’il existe des dépendances des deux packages (gm, async) qui doivent également faire partie du package.
Alors voici ce que vous devez faire:
Donc, votre paquet complet devrait ressembler à quelque chose comme ça:
CreateThumbnail.js
/node_modules/.bin
/node_modules/array-parallel
/node_modules/array-series
/node_modules/async
/node_modules/cross-spawn
/node_modules/debug
/node_modules/gm
/node_modules/isexe
/node_modules/lodash
/node_modules/lru-cache
/node_modules/ms
/node_modules/pseudomap
/node_modules/which
/node_modules/yallist
Cela n'a rien à voir, mais Google m'a amené ici, alors:
AWS vous donnera une erreur:
Unable to import module '<myfile>': Error
Ce qui se passait réellement pour moi, c’était qu’il fallait un fichier JS non existant. L'erreur est un peu trompeuse.
AWS Lambda utilise le nom du fichier et le nom de la fonction de gestionnaire. Par conséquent, si vous définissez votre gestionnaire comme suit: exports.myHandler = function(event, context)
dans un fichier nommé index.js
, votre gestionnaire est index.myHandler
.
Un problème possible est de télécharger le fichier lambda en tant que fichier Zip créé via PowerShell Compress-Archive
. Compress-Archive
a un bogue qui oblige AWS à extraire les fichiers dans une arborescence plate (sans sous-répertoires), avec des barres obliques inverses dans les noms de fichiers: