এডাব্লুএস ল্যাম্বদা ত্রুটি: "মডিউল '/ ভার / টাস্ক / সূচক' খুঁজে পাওয়া যায় না"


87

নোড.জেএস আলেক্সা টাস্ক ইস্যু

আমি বর্তমানে এডাব্লুএস ল্যাম্বদার মাধ্যমে একটি নোড.জেএসএক্স আলেক্সা টাস্ককে কোড করছি, এবং আমি এমন একটি ফাংশন কোড করার চেষ্টা করছি যা ওপেন ওয়েদার এপিআই থেকে তথ্য গ্রহণ করে এবং এটি একটি পরিবর্তনশীল হিসাবে ডাকা হয় weather। সম্পর্কিত কোডটি নিম্নরূপ:

var request = require('request');
var weather = "";
function isBadWeather(location) {
      var endpoint = "http://api.openweathermap.org/data/2.5/weather?q=" + location + "&APPID=205283d9c9211b776d3580d5de5d6338";
      var body = "";
      request(endpoint, function (error, response, body) {
            if (!error && response.statusCode == 200) {
                  body = JSON.parse(body);
                  weather = body.weather[0].id;
            }
      });
}

function testWeather()
{
      setTimeout(function() {
      if (weather >= 200 && weather < 800)
            weather = true;
      else
            weather = false;
      console.log(weather);
      generateResponse(buildSpeechletResponse(weather, true), {});
      }, 500);
}

আমি এই স্নিপেটটি ক্লাউড 9 এবং অন্যান্য আইডিইতে অগণিত সময় চালিয়েছি এবং মনে হয় এটি নির্দ্বিধায় কাজ করছে। যাইহোক, আমি যখন এটি একটি প্যাকেজে জিপ করে এডাব্লুএস ল্যাম্বডায় আপলোড করি তখন আমি নিম্নলিখিত ত্রুটিটি পাই:

{
    "errorMessage": "Cannot find module '/var/task/index'",
    "errorType": "Error",
    "stackTrace": [
        "Function.Module._load (module.js:276:25)",
        "Module.require (module.js:353:17)",
        "require (internal/module.js:12:17)"
    ]
}

আমি অজস্র নিবন্ধগুলি ইনস্টল করেছি এবং মডিউল-জেএস, অনুরোধ এবং আরও অনেক নোড মডিউল ইনস্টল করেছি যা এই কোডটি চালিত করে, তবে কিছুই এই সমস্যাটিকে ঠিক করতে পারে বলে মনে হয় না। কেবলমাত্র ক্ষেত্রে, এখানে আমার ডিরেক্টরিটি রয়েছে:

- planyr.zip
   - index.js
   - node_modules
   - package.json

কেউ কি জানেন যে বিষয়টি কী হতে পারে? আপনাকে অগ্রিম অসংখ্য ধন্যবাদ।


এখানে আমার কোডের জন্য লগ আউটপুট: START RequestId: 46c71292-debf-11e6-a013-1be2c415a9c1 Version: $LATEST Unable to import module 'index': Error at Function.Module._resolveFilename (module.js:325:15) at Function.Module._load (module.js:276:25) at Module.require (module.js:353:17) at require (internal/module.js:12:17) END RequestId: 46c71292-debf-11e6-a013-1be2c415a9c1 REPORT RequestId: 46c71292-debf-11e6-a013-1be2c415a9c1 Duration: 55.76 ms Billed Duration: 100 ms Memory Size: 128 MB Max Memory Used: 16 MB
অ্যান্টনি ক্রিভনোস

4
ম্যাকের টার্মিনালটি ব্যবহার করে জিপ করা সম্পর্কিত উত্তর ছাড়াও, আপনার কোডফিলকে 'index.js' বলা হয়েছে তাও নিশ্চিত করুন। আমার আরও বর্ণনামূলক নাম ছিল, ত্রুটি উত্পন্ন করেছিল।
আর্ট

4
@ আর্ট এটি আমার সমস্যা ছিল। আমি একটি টেস্ট.জেএস জিপ করেছি এবং এটি একটি নিয়ন্ত্রণহীন ত্রুটি ফেলেছে। এটি সূচক.জেজে পরিবর্তিত করার পরে এটি দুর্দান্ত কাজ করেছে। ধন্যবাদ
হুডস্পেথ

উত্তর:


229

ঠিক কর! আমার সমস্যাটি হ'ল আমি ফাইন্ডারে আমার ম্যাকের অন্তর্নির্মিত সংক্ষেপণ ফাংশনটি ব্যবহার করে ফাইলটি জিপ করার চেষ্টা করেছি।

যদি আপনি Mac ব্যবহারকারী হন তাহলে আমার মত, আপনি টার্মিনাল নিম্নলিখিত স্ক্রিপ্ট যখন আপনি (আপনার ফোল্ডার আপনার প্রকল্পের রুট ডিরেক্টরিটি হয় চালানো উচিত index.js, node_modulesইত্যাদি ফাইল)।

zip -r ../yourfilename.zip *

উইন্ডোজ জন্য:

Compress-Archive -LiteralPath node_modules, index.js -DestinationPath yourfilename.zip

7
আমি এইভাবে জিপ করছিলাম: "জিপ-আর ফোল্ডার ফোল্ডার.জাইপ" এবং অবশ্যই এটি ব্যর্থ হয়েছে। ডিরেক্টরি না করে কেবল ফাইলগুলিকে জিপ করার জন্য টিপটির জন্য ধন্যবাদ
ডেন ম্যাকাওল

6
উইন্ডোজ সম্পর্কে?
অলোক রাজাসুকুমারান

এছাড়াও ফাংশনটির নামকরণ করা নিশ্চিত করুনindex.js
জ্ঞান

ডিরেক্টরি বাইরে থেকে এটি করার কোন উপায় আছে?
andrhamm

4
@ আন্ডারহ্যাম হ্যাঁ বিন্যাসটি হ'ল zip -r /path/to/destination.zip /path/to/source/directory/*। যে ডিরেক্টরিতে বিষয়বস্তু জিপ। আপনি যদি ডিরেক্টরিটি নিজেই জিপ করতে চান তবে * ছাড়া পথ / পথ / থেকে / উত্স / ডিরেক্টরিটি ব্যবহার করুন।
কাজাজ

23

গৃহীত উত্তরে আপডেট করুন: যখন এই ত্রুটি ঘটে তখন এর অর্থ আপনার জিপ ফাইলটি বৈধ ফর্মটিতে নেই যা AWS এর প্রয়োজন।

আপনি যদি জিপটিতে ডাবল ক্লিক করেন তবে আপনার ফোল্ডারটি আপনার কোড ফাইলের মধ্যে দেখতে পাবেন, তবে লাম্বদা চায় যে আপনি জিপটিতে ডাবল ক্লিক করলে এটি সরাসরি কোড ফাইলগুলি দেখায়।

এটি অর্জন করতে:

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

তারপরে, index.zipএডাব্লুএস ল্যাম্বডায় আপলোড করুন ।


উইন্ডোজ গিট বেস্ট নিক্ষেপ করার ত্রুটি "কমান্ড পাওয়া যায় নি", কীভাবে এই ধারণাটি সমাধান করবেন?
পারদীপ জৈন

4
এটি উবুন্টুর কমান্ড, দয়া করে উইন্ডোজের জন্য গুগল করুন বা কীভাবে কমান্ড প্রম্পট থেকে জিপ তৈরি করবেন
আশুতোষ ঝা

20

ফাইলের নাম এবং হ্যান্ডলারের নাম একই কিনা তা পরীক্ষা করুন:

এক্ষেত্রে আমরা প্রত্যাশা করি যে আমাদের সমস্ত কোড <কোড> বান্ডেল.এল </code> ফাইলে থাকবে

তার অর্থ এই zipফাইলটিতে এমন bundle.jsফাইল রয়েছে যা handlerফাংশন রফতানি করে:

exports.handler = (event, context, callback) => {//...}

4

আমার ক্ষেত্রে এটি ছিল কারণ আমার ভেতরের এসআরসি ডিরেক্টরিতে হ্যান্ডলার ফাইল ছিল।

আমাকে ল্যাম্বদার মধ্যে 'হ্যান্ডলার' সম্পত্তিটি পরিবর্তন করতে হয়েছিল:

index.handler

প্রতি

src/index.handler

আমিও এদিকে ছুটে এসেছি; [উইন্ডোজ] এটি কেবলমাত্র ছিল যে আমি APIআমার রেপোর অংশটিতে সঠিকভাবে ক্লিক করে ব্যবহার করছি Send To > Compressed Folder। এটি কাঠামো সহ একটি জিপ তৈরি করে api/etc, তাই ব্যতিক্রম!
সি বাউয়ার

3

এটি সম্ভবত আপনার স্থাপনার জিপের অভ্যন্তরে থাকা ফাইলগুলির সাথে অনুমতি সম্পর্কিত সমস্যা। chmod 777আপনার ফাইলগুলিকে একটি জিপ ফাইলে প্যাকেজ করার আগে চেষ্টা করুন।


4
দুর্ভাগ্যক্রমে, এটি সমস্যার সমাধান করবে বলে মনে হচ্ছে না। আমি planyrঅন্য কোনও ফোল্ডারের মধ্যে ফোল্ডারটি সংকুচিত করার চেষ্টা করেছি no আমার হ্যান্ডলারের নাম এবং প্রধান জাভাস্ক্রিপ্ট ফাইলের নাম মেলে ( index)।
অ্যান্টনি ক্রিভোনস 20'17

chmod 777একটি খারাপ পরামর্শ ... এটি জনসাধারণের কাছে লেখার, পড়ার এবং সম্পাদনের অনুমতিগুলি খুলছে। দয়া করে সর্বদা সমস্যার রুট কারণ সন্ধান করুন। ইন্টারনেটে কেউ আপনাকে যা করতে বলে তা কার্যকর করার নিরাপত্তা সম্পর্কিত প্রভাবগুলি বোঝার চেষ্টা করুন। সুরক্ষা গুরুত্বপূর্ণ এবং অবশ্যই আমাদের কোডটিতে এটি ডিফল্ট হওয়া উচিত।
Exadra37

3

আমার ক্ষেত্রে সংরক্ষণাগারটিতে index.js ফাইল সহ একটি ফোল্ডার "src" রয়েছে, সুতরাং আমাকে হ্যান্ডলারের কাছে রাখতে হয়েছিল: "src / index.handler"

এখানে চিত্র বর্ণনা লিখুন


0

আমার ক্ষেত্রে আমাকে প্রতিস্থাপন করতে হয়েছিল

exports.handler = function eventHandler (event, context) {

সঙ্গে

exports.handler = function (event, context, callback) {

0

আমি lambci/lambda:nodejs8.10উইন্ডোতে ব্যবহার করার সময় এই ত্রুটিটি পেয়েছি ।

আমি উপরের তালিকাবদ্ধ সমস্ত সমাধানের চেষ্টা করেছি তবে এর কোনটিই আমাকে আমার সমস্যা মোকাবেলায় সহায়তা করতে পারেনি (যদিও ত্রুটির স্ট্যাকটি প্রশ্নের সমান দেখতে একই রকম)।

এখানে আমার সহজ সমাধান:

  1. --entrypointধারকটি চালানোর জন্য পতাকা ব্যবহার করে ফাইলটি ধারকটিতে মাউন্ট করা হয়েছে কিনা তা সন্ধান করতে। দেখা যাচ্ছে যে আমি আমার ডকার ডেস্কটপের সাথে শেয়ার ড্রাইভের সমস্যাটি পেয়েছি।
  2. আমি সেদিন আগে আমার ডকার ডিমনটি স্যুইচ করেছি, তবে এই সমস্যাটি বাদে সবকিছু ঠিকঠাক কাজ করে।
  3. যাইহোক, আমার ড্রাইভটি ডকার ডেস্কটপে রিমান্ট করুন, আপনি উভয়ই dockerআদেশটি ব্যবহার করতে পারেন বা প্রয়োগ করতে ডকার ডেস্কটপ সেটিংসটি খুলতে পারেন।

0

আমার ক্ষেত্রে নোডের স্মৃতিশক্তি শেষ না হওয়ার কারণে এটি ঘটেছিল। আমি --memory-size 1500আমার aws lambda create-function ...কমান্ড যোগ করে এটি স্থির করেছি ।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.