2015-06-06 13 views
13

Tôi tiếp tục gặp lỗi này trong bảng điều khiển aws-lambda khi tải lên mã từ tệp zip. Tôi đã thử tải lên các tệp zip khác và chúng hoạt động chính xác. Tệp .js có tên "CreateThumbnail.js" trong tệp zip. Tôi tin rằng người xử lý cũng được đặt tên đúng "CreateThumbnail.handler". thư mục con node_modules cũng được thiết lập. Bất cứ ai có bất kỳ ý tưởng?aws-lambda Không thể tìm thấy mô-đun

{ 
    "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

Bạn đã đặt "CreateThumbnail" làm tên Bộ xử lý trong phần "Thay đổi cấu hình chức năng và vai trò"? Bạn có thể hiển thị tiêu đề của hàm của bạn không? –

+0

Bất kỳ may mắn nào với điều này? – ac360

+0

Bạn có chắc chắn đã nén nội dung của tệp, chứ không phải chính tệp đó không? – michaelAdam

Trả lời

8

Ok, tôi đã tự làm điều này, chỉ cần đảm bảo rằng bạn tạo mã zip sao cho tệp .js không kết thúc trong thư mục, vì AWS sẽ giải nén tệp bạn tải lên và cố gắng tìm .js tập tin bằng tên của handler bạn đã cung cấp, và nếu nó bên trong một thư mục nó sẽ không giúp bạn.

12

Con đường tôi đã có thể có được điều này để làm việc là:

  1. Tên file exports.js
  2. Tên xử lý, bên trong file, exports.handler
  3. Đặt handler trong lambda config để exports.handler
  4. Zip lên chỉ các nội dung của thư mục, không phải là thư mục riêng của mình (như đã đề cập ở trên) và đổi tên file zip exports.zip
+3

Tên thật của tệp không thực sự quan trọng. Điều quan trọng là hoàn toàn đủ điều kiện cho tệp và đường dẫn dẫn đến tệp đó. Tệp zip của tôi có một thư mục có tên là 'scripts', và bên trong nó có một số tệp có' exports.handler' bên trong chúng. Đối với _Handler_ bên trong giao diện điều khiển của Lamdba, tôi chỉ định, 'scripts/transforms.handler'. –

1

AWS Lambda sử dụng tên của tệp và tên của hàm xử lý, vì vậy nếu bạn đã xác định trình xử lý của mình như sau: exports.myHandler = function(event, context) trong tệp có tên index.js, trình xử lý của bạn là index.myHandler.

0

Điều này hóa ra lại đơn giản đối với tôi.

Tôi đã nhận được, không thể tạo chỉ mục. trong trường hợp của tôi, tập tin lambda chính của tôi với exports.handler trong phải được gọi là index.js

Thử gọi CreateThumbnail.js tập tin chính của bạn

3

lỗi chính xác này có thể hiển thị nếu tập tin nén của bạn (s) không có quyền đọc trên toàn thế giới. (chmod -R ugo+r).

Kiểm tra quyền của tệp trước khi chúng được nén. Điều này không được nhấn mạnh enaugh không may bởi AWS và nó gây ra rất nhiều đau đầu cho nhiều người.

+0

Tôi đã sử dụng gulp để xây dựng và sản xuất tệp zip của mình bằng gói 'gulp-zip', đã tạo ra dạng sự cố này. Chỉ có vẻ xảy ra khi nó cố gắng nén nó (mặc định), vì vậy sử dụng tùy chọn này làm cho nó hoạt động với tôi: '.pipe (zip ('myfile.zip', {compress: false}))'. Cảm ơn, tôi đã kéo tóc ra khỏi cái này một lúc. – Ocelot20

+2

Scratch that..'compress: false' không hoạt động, nhưng 'gulp-zip' vẫn là thủ phạm. Nén thủ công các tệp giống nhau đã hoạt động. – Ocelot20

1

Tôi gặp sự cố này trên mô-đun tùy chỉnh mà tôi đã tạo trong thư mục node_modules. Tất cả mọi thứ chạy tốt trong thử nghiệm trên máy Win10 của tôi, nhưng khi tải lên tôi tiếp tục nhận được rằng cùng một "Không thể tìm thấy mô-đun 'modulename'" lỗi.

Hóa ra tôi đã không khớp; đây là dòng package.json từ các mô-đun mà không thể được tìm thấy:

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

và đây là tên tập tin thực tế:

Modulename.js 

Case-nhạy cảm; Windows không phải là, linux (và do đó AWS) là.

0

File Name:
app.js
Lambda Chức năng trong "app.js":
exports.handler = function (sự kiện, bối cảnh) ...
Lambda Handler trên Amazon Console: (. {app} Js + xuất khẩu {handler} = app.handler)
app.handler

Khi bạn giải nén thư mục, bạn sẽ thấy:
app.js
node_modules

Các vấn đề liên quan