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 *
- использовать экспорт во всех ваших 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