2015-06-06 21 views
13

Otrzymuję ten błąd w konsoli aws-lambda podczas przesyłania kodu z pliku zip. Próbowałem przesłać inne pliki zip i działają one poprawnie. Plik .js nosi nazwę "CreateThumbnail.js" w pliku zip. Wierzę, że program obsługi jest również nazwany poprawnie "CreateThumbnail.handler". znajduje się również podkatalog node_modules. Ktoś ma jakiś pomysł?aws-lambda Nie można znaleźć modułu

{ 
    "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)" 
    ] 
} 
+0

Czy wybrany „CreateThumbnail” jako nazwa Handler w „konfiguracji funkcji zmiany i rola” sekcji? Czy możesz pokazać nagłówek swojej funkcji? –

+0

Masz szczęście? – ac360

+0

Czy zadbałeś o skompresowanie zawartości pliku, a nie samego pliku? – michaelAdam

Odpowiedz

8

Ok, zrobiłem to sam, po prostu upewnij się, że zrobić zip takie, że plik js nie kończy się w folderze, ponieważ AWS będzie rozpakować plik przesyłania i próbuje znaleźć Plik .js o nazwie handler, który podałeś, a jeśli znajduje się w folderze, to ci to nie pomoże.

12

Sposób udało mi się uzyskać to do pracy było:

  1. Nazwa pliku exports.js
  2. Nazwa procedury obsługi, wewnątrz pliku, exports.handler
  3. Ustaw obsługi w N config exports.handler
  4. zapiąć tylko zawartość katalogu, a nie sam folder (jak wspomniano powyżej) oraz zmiany nazwy exports.zip zip
+3

Rzeczywista nazwa pliku nie jest tak naprawdę ważna. Kluczem jest pełna kwalifikacja pliku i ścieżka do niego prowadząca. Mój plik zip ma katalog o nazwie 'scripts', a wewnątrz znajduje się kilka plików z' exports.handler' wewnątrz nich. Dla _Handler_ wewnątrz konsoli Lamdby, określam 'scripts/transforms.handler'. –

1

AWS Lambda używa nazwy pliku i nazwy funkcji obsługi, więc jeśli zdefiniowałeś swój program obsługi w ten sposób: exports.myHandler = function(event, context) w pliku o nazwie index.js, twój program obsługi jest index.myHandler.

0

Okazało się to dla mnie proste.

Otrzymałem, nie mogę utworzyć indeksu. w moim przypadku, mój główny plik lambda z exports.handler w musiały być nazywany index.js

Spróbuj zadzwonić swoje główne CreateThumbnail.js plików

3

Ten dokładny błąd może pojawić się, jeśli plik spakowany (s) nie masz pozwolenia na czytanie na całym świecie. (chmod -R ugo+r).

Sprawdź uprawnienia do pliku, zanim zostaną spakowane. Nie jest to podkreślane przez AWS, niestety, i spowodowało wiele bólów głowy dla wielu.

+0

Użyłem gulp do zbudowania i wyprodukowania pliku zip przy użyciu pakietu 'gulp-zip', który wygenerował tę formę problemu. Wydawało się, że dzieje się tak tylko wtedy, gdy próbował skompresować (domyślnie), więc użycie tej opcji sprawiło, że zadziałało to dla mnie: '.pipe (zip (" myfile.zip ", {compress: false}))'. Dzięki, od czasu do czasu wyciągałem włosy z tego. – Ocelot20

+2

Scratch that'compress: false' nie działał, ale 'gulp-zip' wciąż był winowajcą. Ręczne skompresowanie tych samych plików działało. – Ocelot20

1

Miałem ten problem na niestandardowym module, który zbudowałem, który był w katalogu node_modules. Wszystko przebiegło bez zarzutu podczas testowania na moim komputerze Win10, ale po załadowaniu ciągle otrzymywałem ten sam błąd "Nie mogę znaleźć modułu" nazwa_modułu "".

Okazuje się, że miałem niedopasowanie; oto linia package.json z modułu że nie można znaleźć:

"main": "./build/modulename.js", 

i tu jest rzeczywista nazwa pliku:

Modulename.js 

Case-wrażliwy; Windows nie jest, linux (a więc AWS).

0

Nazwa pliku:
app.js
Lambda funkcji w "app.js":
exports.handler = function (imprezy, kontekst) ...
Lambda Handler na Amazon (Console. {app} .js + eksportu {handler} = app.handler)
app.handler

Kiedy rozpakuj folder, powinieneś zobaczyć:
app.js
node_modules

Powiązane problemy