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)"
]
}
Ich konnte das so zum Laufen bringen:
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.
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.
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).
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
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
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:
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
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.
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
.
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: