2015-06-06 17 views
13

मुझे ज़िप फ़ाइल से कोड अपलोड करते समय यह त्रुटि aws-lambda कंसोल में मिलती रहती है। मैंने अन्य ज़िप फ़ाइलों को अपलोड करने का प्रयास किया है और वे सही तरीके से काम करते हैं। .js फ़ाइल को ज़िप फ़ाइल में "CreateThumbnail.js" नाम दिया गया है। मेरा मानना ​​है कि हैंडलर को भी "CreateThumbnail.handler" नाम दिया गया है। node_modules उपनिर्देशिका भी सेटअप है। किसी को भी कोई विचार है?aws-lambda मॉड्यूल नहीं मिला

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

आप "परिवर्तन समारोह विन्यास और भूमिका" खंड में "CreateThumbnail" सेट हैंडलर नाम के रूप में है? क्या आप अपने फ़ंक्शन का हेडर दिखा सकते हैं? –

+0

इस के साथ कोई भाग्य? – ac360

+0

क्या आप फ़ाइल की सामग्री को ज़िपित करना सुनिश्चित करते हैं, न कि फाइल स्वयं? – michaelAdam

उत्तर

8

ठीक है, मैं इस अपने आप को किया था, बस सुनिश्चित करें कि आप ज़िप ऐसी है कि .js फ़ाइल एक फ़ोल्डर के अंदर खत्म नहीं करता है क्योंकि एडब्ल्यूएस आपके द्वारा अपलोड फ़ाइल अनज़िप और एक खोजने की कोशिश करता हैं बनाने के लिए, आपके द्वारा दिए गए हैंडलर के नाम से .js फ़ाइल, और यदि यह एक फ़ोल्डर के अंदर है तो यह आपकी मदद नहीं करेगा।

12

तरह से मैं काम करने के लिए इस प्राप्त करने में सक्षम था:

  1. नाम फ़ाइल exports.js
  2. नाम हैंडलर, फ़ाइल के भीतर, exports.handler
  3. में हैंडलर सेट लैम्ब्डा config exports.handler को
  4. फ़ोल्डर की केवल सामग्री की ज़िप बंद, नहीं फ़ोल्डर को स्वयं (जैसा कि ऊपर उल्लेख) और नाम बदलने ज़िप फ़ाइल exports.zip
+3

फ़ाइल का वास्तविक नाम वास्तव में महत्वपूर्ण नहीं है। कुंजी पूरी तरह से फ़ाइल और इसके लिए अग्रणी पथ को अर्हता प्राप्त करने के लिए है। मेरी ज़िप फ़ाइल में 'स्क्रिप्ट' नामक एक निर्देशिका है, और इसके अंदर 'export.handler' के साथ कई फाइलें हैं। Lamdba के कंसोल के अंदर _Handler_ के लिए, मैं निर्दिष्ट करता हूं, 'स्क्रिप्ट/transforms.handler'। –

1

एडब्ल्यूएस लैम्ब्डा फ़ाइल के नाम और हैंडलर फ़ंक्शन का नाम उपयोग करता है, इसलिए यदि आपने नामक फ़ाइल में exports.myHandler = function(event, context) को अपने हैंडलर को परिभाषित किया है, तो आपका हैंडलर index.myHandler है।

0

यह मेरे लिए एक आसान साबित हुआ।

मैं प्राप्त कर रहा था, सूचकांक नहीं बना सकता। मेरे मामले में, में exports.handler साथ अपने मुख्य लैम्ब्डा फ़ाइल के नाम से जाना index.js

आपका मुख्य फ़ाइल CreateThumbnail.js बुला

3

यह सटीक त्रुटि है, तो ऊपर दिखा सकें था अपने ज़िपित फ़ाइल (रों) दुनिया भर में पढ़ने की अनुमति नहीं है। (chmod -R ugo+r)।

ज़िप से पहले फ़ाइल अनुमतियों की जांच करें। दुर्भाग्यवश एडब्ल्यूएस द्वारा इसे हंसते हुए जोर नहीं दिया गया है और इससे कई लोगों के लिए सिरदर्द पैदा हुआ है।

+0

मैं 'gulp-zip' पैकेज का उपयोग करके अपनी ज़िप फ़ाइल बनाने और उत्पादित करने के लिए गल्प का उपयोग कर रहा था, जिसने इस मुद्दे का निर्माण किया था। केवल तब ऐसा प्रतीत होता था जब इसे संपीड़ित करने की कोशिश की गई (डिफ़ॉल्ट), इसलिए इस विकल्प का उपयोग करके यह मेरे लिए काम करता है: '.pipe (ज़िप ('myfile.zip', {compress: false}))। धन्यवाद, मैं थोड़ी देर के लिए इस पर अपने बालों को खींच रहा था। – Ocelot20

+2

स्क्रैच करें कि ... 'कॉम्प्रेस: ​​झूठा' काम नहीं कर रहा था, लेकिन 'गल्प-ज़िप' अभी भी अपराधी था। मैन्युअल रूप से एक ही फाइलों को ज़िपित किया। – Ocelot20

1

मुझे यह समस्या एक कस्टम मॉड्यूल पर थी जो मैंने बनाया था जो node_modules dir में था। मेरी Win10 मशीन पर परीक्षण में सबकुछ ठीक हो गया, लेकिन अपलोड होने पर मैंने वही "मॉड्यूल नहीं ढूंढ पाया" मॉड्यूलनाम 'त्रुटि।

यह पता चला है कि मुझे एक मेल नहीं मिला; यहाँ है कि पाया नहीं जा सका मॉड्यूल से package.json लाइन है:

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

और यहाँ वास्तविक फ़ाइल नाम है:

Modulename.js 

केस-संवेदी; विंडोज नहीं है, लिनक्स (और इस प्रकार एडब्ल्यूएस) है।

0

फ़ाइल नाम:
"app.js" में app.js
लैम्ब्डा फंक्शन:
exports.handler = समारोह (घटना, संदर्भ) ...
लैम्ब्डा हैंडलर अमेज़न कंसोल पर: (। {एप्लिकेशन} .js + निर्यात {हैंडलर} = app.handler)
app.handler

जब आप फ़ोल्डर अनज़िप, आप देखना चाहिए:
app.js
node_modules

संबंधित मुद्दे