Comme mon titre l'explique, j'obtiens l'erreur suivante:
{
"errorMessage": "Cannot find module 'index'",
"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)"
]
}
J'ai essayé les deux solutions fournies dans créer une fonction-lambda-dans-aws-de-fichier-zip et simple-node-js-exemple-dans-aws-lambda
Ma configuration ressemble actuellement à:
et ma structure de fichier est:
et ma fonction de gestionnaire d'index.js ressemble à:
exports.handler = function(event, context) {
Qu'est-ce qui pourrait causer ce problème en dehors de ce qui a été dit dans ces deux réponses ci-dessus? J'ai essayé les deux solutions et j'ai également alloué plus de mémoire à la fonction, juste au cas où elle ne pourrait pas s'exécuter.
EDIT - Dans le but d’essayer, j’ai créé une version encore plus simple de mon code original et qui ressemblait à ceci:
var Q = require('q');
var AWS = require('aws-sdk');
var validate = require('lambduh-validate');
var Lambda = new AWS.Lambda();
var S3 = new AWS.S3();
theHandler = function (event, context) {
console.log =('nothing');
}
exports.handler = theHandler();
Et pourtant ne fonctionne toujours pas avec la même erreur?
Essayez de compresser et de télécharger le contenu du dossier lambda-create-timelapse. Pas le dossier lui-même.
Si cela n’est pas clair pour les autres, voici les étapes:
Étape 1 Accédez au dossier de votre projet et ouvrez-le de sorte que vous vous trouviez dans le dossier:
Étape 2 Sélectionnez toutes les images que vous souhaitez télécharger vers Lambda:
Étape 3 Cliquez avec le bouton droit de la souris et compressez les fichiers que vous avez sélectionnés:
Cela vous donnera un fichier .Zip, qui est le fichier que vous devez télécharger sur Lambda:
Il y a beaucoup de façons d'automatiser cela, mais c'est la procédure manuelle.
J'ai moi-même rencontré ce problème à quelques reprises, et il s'agit en fait de compresser le dossier au lieu de simplement afficher le contenu, comme vous êtes censé le faire.
Pour ceux qui travaillent depuis le terminal ...
À l’intérieur du répertoire où se trouvent les fichiers .js, exécutez les opérations suivantes:
Zip -r ../zipname.Zip *
Le *
demande au client de compresser tout le contenu de ce dossier. ../zipname.Zip
lui demande de nommer le fichier zipname.Zip
et de le placer juste en dehors de ce répertoire actuel.
J'ai eu le même problème il y a quelque temps - j'ai reformaté le code.
function lambdafunc1(event, context) {
...
...
...
}
exports.handler = lambdafunc1
La déclaration de fonction Lambda
correcte peut ressembler à ceci:
var func = function(event, context) {
...
};
exports.handler = func;
Il se peut que d’autres erreurs de syntaxe empêchent le fichier index.js
d’être exécuté correctement. Essayez d’exécuter votre code localement en utilisant un autre fichier et en utilisant le index.js
comme votre propre module.
Le problème se produit lorsque le gestionnaire ne peut pas être situé dans le zip au premier niveau. Donc, chaque fois que vous voyez une telle erreur, assurez-vous que le fichier est au premier niveau du dossier éclaté.
Pour résoudre ce problème Compressez les fichiers et non le dossier contenant les fichiers.