wake-up-neo.com

aws-lambda Modul kann nicht gefunden werden

Ich erhalte diesen Fehler in der aws-lambda-Konsole beim Hochladen von Code aus einer ZIP-Datei. Ich habe versucht, andere Zip-Dateien hochzuladen, und sie funktionieren ordnungsgemäß. Die .js-Datei heißt in der Zip-Datei "CreateThumbnail.js". Ich glaube, dass der Handler auch "CreateThumbnail.handler" heißt. Das Unterverzeichnis node_modules ist ebenfalls eingerichtet. Hat jemand eine Idee?

{
  "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)"
  ]
}
16
Daniel Munoz

Ich konnte das so zum Laufen bringen:

  1. Benennen Sie die Datei exports.js
  2. Benennen Sie den Handler in der Datei exports.handler
  3. Setzen Sie den Handler in der Lambda-Konfiguration auf exports.handler
  4. Packen Sie nur den Inhalt des Ordners ein, nicht den Ordner selbst (wie oben erwähnt) und benennen Sie die Zip-Datei exports.Zip um
15
Aaron

Ok, das habe ich selbst gemacht. Stellen Sie nur sicher, dass Sie die ZIP-Datei so erstellen, dass die JS-Datei nicht in einem Ordner endet, da AWS die hochgeladene Datei entpackt und versucht, eine JS-Datei anhand des Namens zu finden Handler, den Sie angegeben haben, und wenn es sich in einem Ordner befindet, hilft es Ihnen nicht.

Dieser genaue Fehler kann angezeigt werden, wenn Ihre gezippten Dateien nicht über eine Leseberechtigung weltweit verfügen. (chmod -R ugo+r).

Überprüfen Sie die Dateiberechtigungen, bevor sie komprimiert werden. Dies wird von AWS leider nicht besonders hervorgehoben und es bereitete vielen Kopfschmerzen.

4
Catalin Ciurea

Einige Bibliotheksdateien verfügen möglicherweise nicht über globales Lesen, sodass Lambda nicht in den Inhalt lesen und den Inhalt erstellen kann. 

Stellen Sie sicher, dass alle Dateien in node_modules vor dem Verpacken lesbar sind:

chmod -R +r node_modules

Dann Zip und Upload.

1
Leon li

Ich hatte dieses Problem bei einem benutzerdefinierten Modul, das ich erstellt hatte, das im Verzeichnis node_modules lag. Beim Testen auf meinem Win10-Computer lief alles einwandfrei, aber beim Hochladen erhielt ich immer den gleichen Fehler "Modulmodulname konnte nicht gefunden werden".

Es stellt sich heraus, dass ich ein Missverhältnis hatte. Hier ist die package.json-Zeile aus dem Modul, die nicht gefunden werden konnte:

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

und hier ist der tatsächliche Dateiname:

Modulename.js

Groß- und Kleinschreibung Windows ist nicht, Linux (und damit auch AWS).

1
DonPedro

Dies stellte sich für mich als einfach heraus.

Ich habe bekommen, kann Index nicht erstellen. In meinem Fall musste meine Haupt-Lambda-Datei mit dem exports.handler in index.js heißen

Versuchen Sie, Ihre Hauptdatei CreateThumbnail.js aufzurufen

0
CarlPWilliams

Dateiname:
app.js
Lambda-Funktion in "app.js":
exports.handler = Funktion (Ereignis, Kontext) ...
Lambda-Handler in der Amazon-Konsole:
app.handler ({app} .js + exportiert. {handler} = app.handler)

Wenn Sie den Ordner entpacken, sollten Sie Folgendes sehen:
app.js
Knoten_Module

0
Barbaros Alp

Das Tutorial fordert Sie auf, die folgenden Elemente in Ihre ZIP-Datei aufzunehmen:

CreateThumbnail.js
/node_modules/gm
/knotenmodule/async

Es wird nicht berücksichtigt, dass es Abhängigkeiten der beiden Pakete (gm, async) gibt, die ebenfalls Teil des Pakets sein müssen.

So müssen Sie Folgendes tun: 

  1. Wechseln Sie in Ihrem Projektordner in den Ordner node_modules und führen Sie den Befehl ' npm install gm async ' aus. Dadurch werden gm, async und alle ihre Abhängigkeiten in diesem Ordner installiert.
  2. Packen Sie nun die Datei 'CreateThumbnail.js' und den Ordnercomplete'node_modules' in eine ZIP-Datei und laden Sie sie hoch. Es sollte jetzt klappen.

Ihr komplettes Paket sollte also ungefähr so ​​aussehen:

CreateThumbnail.js
/node_modules/.bin
/node_modules/array-parallel
/node_modules/array-series
/node_modules/async
/node_modules/cross-spawn
/node_modules/debug
/node_modules/gm
/node_modules/isexe
/node_modules/lodash
/node_modules/lru-cache
/node_modules/ms
/node_modules/pseudomap
/node_modules/which
/node_modules/yallist
0
Kirmani

Dies ist nicht verwandt, aber Google hat mich hierher gebracht, also:

AWS gibt einen Fehler aus:

Unable to import module '<myfile>': Error

Was wirklich für mich passierte, war, dass eine nicht vorhandene JS-Datei erforderlich war. Der Fehler ist etwas irreführend.

0
Fábio Santos

AWS Lambda verwendet den Namen der Datei und den Namen der Handlerfunktion. Wenn Sie also Ihren Handler wie folgt definiert haben: exports.myHandler = function(event, context) in einer Datei mit dem Namen index.js, ist Ihr Handler index.myHandler.

0
Esdras Mayrink

Ein mögliches Problem ist, wenn Sie das Lambda als eine mit PowerShell Compress-Archive erstellte ZIP-Datei hochladen. Compress-Archive hat einen Fehler , der dazu führt, dass AWS die Dateien in eine flache Struktur (keine Unterverzeichnisse) mit umgekehrten Schrägstrichen in Dateinamen extrahiert:

 enter image description here

0
Roman Starkov