2016-11-23 8 views
8

Jestem nowicjuszem w aws i właśnie zacząłem pracować z aws lambda wykonując kilka tutoriali youtube i udało mi się napisać funkcje aws lambda z powodzeniem w edytorze stron internetowych.W obliczu problemów po przesłaniu kodu pocztowego w aws lambda

Próbowałem jednak z plikiem ładującym zip z mojego lokalnego systemu, w którym napisałem kod node.js, który używa modułów "fs" i ​​"fill-pdf". Ale kiedy próbowałem uruchomić kod, był to błąd.

"błąd": nie znaleziono modułu "/ var/task/index". Przeszukałem Internet i znalazłem kilka linków, takich jak: https://github.com/lob/lambda-pdftk-example Próbowałem tego, ale pokazuje również ten sam błąd.

Oto mój kod:

var index = require('index'); 
    var fillPdf = require("fill-pdf"); 
    var fs = require('fs'); 
    var formDate = { 
    'Employee Name': 'MyName', 
    'Company Name': 'ComapnyName' 
    }; 
    var pdfTemplatePath = "my.pdf"; 


    fillPdf.generatePdf(formDate, pdfTemplatePath, function(err, 
    output) { 
    if (!err) { 

     fs.writeFile('message.pdf', output, function (err) { 
    if (err) throw err; 
    console.log('It\'s saved! in same location.'); 
    }); 
    } 
    }); 

Chodzi o to, że nie wiem, co może być powodem, że ten błąd jest coming.Thanks za wszelką pomoc.

+0

Czy istnieje już błędów informacji można dołączyć? –

+0

{ "errorMessage": "Nie można znaleźć modułu"/var/task/index '", " errorType ":" Błąd ", " stackTrace ": [ " Function.Module._load (module.js: 276: 25) ", " Module.require (module.js: 353: 17) ", " require (internal/module.js: 12: 17) " ] } – learner

+0

Rozwiązany: Mój błąd w folderze modułów węzłów był brak modułu indeksowego. Aso muszę napisać funkcję handler, która będzie w sposób zrozumiały dla aws lambda. Kod js węzła pośredniego nie będzie działał w aws lambda. – learner

Odpowiedz

0

Usuń linię var index = require('index');, ponieważ nie jest używana w kodzie. Nie jestem pewien, dlaczego nie można go znaleźć po zainstalowaniu, ale w bieżącym przykładzie nie potrzebujesz go.

+0

Tak, usunąłem. Właściwie to również podążałem za tym linkiem: http://stackoverflow.com/questions/30678348/aws-lambda-cannot-find-module – learner

+0

Teraz błąd się zmienił. To jest "errorMessage": "Proces zakończony przed zakończeniem żądania" } – learner

+0

Jeśli wystąpi więcej zmian kodu i nowy błąd, zaktualizuj pytanie. –

26

Upewnij się, że nie zapisujesz folderu, ale jego zawartości. Sprawdź, czy zip zawiera index.js na swoim poziomie głównym

+0

Dziękujemy! Pracował dla mnie! –

+0

Och, żartujesz ... Zmarnowałem 3 godziny mojego życia przeglądając kod i próbując dowiedzieć się, co jest nie tak :( –

+0

@lyoseg, jeśli nie zapiszesz folderu, jak przesłać go do Amazona? Możesz tylko wybrać folder kończący się na .zip? – arcom

2

może wystąpić błąd z uwagi na następujące kwestie: występuje

1. Properly zip the folder wait for it's zipping process completion and 
then upload. 

2. First run the main.js file locally like using node main.js and check 
are there any errors showing in the terminal window, if it does then 
fix them and then upload. 

3. Also there must be handler file that lambda needs, which is must 
    so if you have the handler.js file then when in aws lambda you 
create a lambda function and check the configuration setting there 
then do update the name of the handler file name with yours like by 
default it is index.js may be you would have lambda.js do change it 
with lambda name (example lambda.handler) 
0

Ten błąd nie to znaczy, że zamek błyskawiczny jest w ważnej postaci, w jakiej AWS wymagania.

Dwukrotne kliknięcie na zamek znajdziesz folder wewnątrz że plik kodu, ale lambda chce, że po dwukrotnym kliknięciem na zamek Powinni wykazać bezpośrednie pliki kodu.

Aby to achive:

open terminal 
cd your-lambda-folder 
zip -r index.zip * 

następnie przesłać index.zip lambda

Powiązane problemy