AWS Lambda: невозможно импортировать модуль

пожалуйста, прости меня, я совершенно новый в Lambda и Node.

Я пытаюсь повторить этот мерзавец, чтобы заказать пиццу с помощью кнопки AWS IoT.

Мой текущий код:

var pizzapi = require('dominos');

var myStore = new pizzapi.Store(
    {
        ID: 'Example'
    }
);

var myAddress = new pizzapi.Address(
        {
            Street: 'Example',
            City: 'Example',
            Region: 'Example',
            PostalCode: 'Example'
        }
    );

var myCustomer = new pizzapi.Customer(
    {
        firstName: 'Example',
        lastName: 'Example',
        address: myAddress,
        phone: 'Example',
        email: '[email protected]'
    }
);

var order = new pizzapi.Order(
    {
        customer: myCustomer,
        storeID: myStore.ID
    }
);

var cardNumber='Example';
var cardInfo = new order.PaymentObject();
cardInfo.Amount = order.Amounts.Customer;
cardInfo.Number = cardNumber;
cardInfo.CardType = order.validateCC(cardNumber);
cardInfo.Expiration = 'Example';
cardInfo.SecurityCode = 'Example';
cardInfo.PostalCode = 'Example';

order.Payments.push(cardInfo);

function orderDominos(event, context) {
  var clickType = event.clickType;
  switch(clickType.toLowerCase()) {
    case "single": {
      order.addItem(
          new pizzapi.Item(
              {
                  code: 'P_14SCREEN',
                  options: {},
                  quantity: 1
              }
          )
      );
      break;
    }
    case "double": {
        order.addItem(
          new pizzapi.Item(
              {
                  code: 'P_14SCREEN',
                  options: {},
                  quantity: 1
              }
          )
      );
      break;
    }
    case "long": {
        order.addItem(
          new pizzapi.Item(
              {
                  code: 'P_14SCREEN',
                  options: {},
                  quantity: 1
              }
          )
      );
      break;
    }
  }
  order.validate(
      function(result) {
          console.log("Order is Validated");
      }
  );
  order.price(
      function(result) {
            console.log("Order is Priced");
      }
  );
  order.place(
      function(result) {
          console.log("Price is", result.result.Order.Amounts, "\nEstimated Wait Time",result.result.Order.EstimatedWaitMinutes, "minutes");
          console.log("Order placed!");
          context.succeed(event);
      }
  );
}

exports.handler = orderDominos;

Ответ 1

В моем случае я упомянул Handler как index.handler, но мое корневое имя файла app.js. Изменено это на index.js.

Также убедитесь, что zip файл имеет ваш index.js, node_modules and package.json напрямую.

Должно быть:

zip file --> index.js
             package.json
             node_modules

Не

zip file --> some_folder_name --> index.js
                                  package.json
                                  node_modules

Ответ 2

Для меня это была проблема с разрешениями, после того как я изменил разрешения для папки 'node_modules' на 777, заархивировал и загрузил ее, все заработало.

Ответ 3

В эту проблему тоже входит. Для меня это решило, что путь к файлу слишком длинный на машине Windows. После zipping я понял, что содержимое node_modules пусто. Я скопировал файлы для перехода на более высокий уровень, например. C:\User\и закрепить указанные файлы. Надеюсь, это поможет!

Ответ 4

У меня была такая же проблема, и я решил ее решить, выполнив следующие шаги.

  • Не используйте параметр zip по умолчанию, указанный в finder в mac. использовать терминал для zip

cd имя папки

zip -r foldername.zip *

  1. использовать экспорт во всех ваших js-функциях, которые вы хотите использовать в файле index.js.

Скажите в файле Javascript a.js

var func = function(){

}

export.func = func ; 

В index.js

var a = require('a.js')
exports.handler(event, context, callback){

a.func

}

Ответ 5

Что сработало для меня, было zip следующие файлы и загрузка zip (после установки npm в папке):

  • node_modules/
  • your_file1.js
  • ваш файл2.js
  • your files.js
  • package.json
  • Пакет-lock.json

Ответ 6

В нашем случае это не проблема пути или разрешения. Мы получили эту ошибку, потому что мы делаем npm prune --production перед развертыванием, и у нас есть некоторые пакеты времени выполнения, которые неправильно помещены в devDependencies, которые стираются на этом этапе. К сожалению лямбда выдает только смутное сообщение об ошибке.

Ответ 7

x75c8.png

Установить

'npm install request' to the same folder of 
----> index.js
      package.json
      node_modules

zip Это и загрузите на Lambda