2015-06-06 25 views
13

Continuo a ricevere questo errore nella console aws-lambda durante il caricamento del codice da un file zip. Ho provato a caricare altri file zip e funzionano correttamente. Il file .js è denominato "CreateThumbnail.js" nel file zip. Credo che anche il gestore sia chiamato correttamente "CreateThumbnail.handler". anche la sottodirectory node_modules è impostata. Qualcuno ha qualche idea?aws-lambda Impossibile trovare il modulo

{ 
    "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)" 
    ] 
} 
+0

hai impostato "createThumbnail" come nome Handler nella "configurazione della funzione Change e il ruolo" sezione? Puoi mostrare l'intestazione della tua funzione? –

+0

Qualche fortuna con questo? – ac360

+0

Ti sei assicurato di comprimere il contenuto del file, non il file stesso? – michaelAdam

risposta

8

Ok, l'ho fatto io stesso, basta assicurarsi che fare la zip in modo che il file .js non finisce all'interno di una cartella, in quanto avrebbe AWS decomprimere il file si carica e cerca di trovare una file .js con il nome del gestore che hai dato e, se si trova all'interno di una cartella, non ti aiuterà.

12

Il modo in cui sono stato in grado di ottenere questo lavoro è stato:

  1. Nome del file exports.js
  2. nome del gestore, all'interno del file, exports.handler
  3. Impostare il gestore del lambda config per exports.handler
  4. comprimere solo il contenuto della cartella, non la cartella stessa (come detto sopra) e rinominare il file zip exports.zip
+3

Il vero nome del file non è molto importante. La chiave è qualificare pienamente il file e il percorso che porta ad esso. Il mio file zip ha una directory chiamata 'scripts', e al suo interno ci sono diversi file con' exports.handler' al loro interno. Per _Handler_ all'interno della console di Lamdba, ho specificato, 'scripts/transforms.handler'. –

1

AWS Lambda utilizza il nome del file e il nome della funzione di gestore, quindi se è stato definito il gestore in questo modo: exports.myHandler = function(event, context) in un file denominato index.js, il gestore è index.myHandler.

0

Questo è risultato per me semplice.

Mi stavo facendo, non posso creare l'indice. nel mio caso, il mio file lambda principale con l'exports.handler in doveva essere chiamato index.js

Prova chiamare i tuoi principali CreateThumbnail.js di file

3

Questo errore esatto può presentarsi se il file zip (s) non ho il permesso di lettura in tutto il mondo. (chmod -R ugo+r).

Verificare le autorizzazioni del file prima che vengano compressi. Questo non è enfatizzato sfortunatamente da AWS e ha causato molti mal di testa per molti.

+0

Stavo usando gulp per costruire e produrre il mio file zip usando il pacchetto 'gulp-zip', che ha prodotto questa forma del problema. Sembrava accadere solo quando ha provato a comprimerlo (il default), quindi usare questa opzione ha funzionato per me: '.pipe (zip ('myfile.zip', {compress: false}))'. Grazie, stavo tirando fuori i miei capelli su questo per un po '. – Ocelot20

+2

Scratch that..'compress: false' non funzionava, ma 'gulp-zip' era ancora il colpevole. Zippare manualmente gli stessi file funzionati. – Ocelot20

1

Ho avuto questo problema su un modulo personalizzato che avevo creato che era nella directory node_modules. Tutto è andato a buon fine durante i test sulla mia macchina Win10, ma quando ho caricato ho continuato a ricevere lo stesso errore "Impossibile trovare il modulo 'modulename'".

Si scopre che ho avuto un disallineamento; ecco la linea di package.json dal modulo che non poteva essere trovato:

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

ed ecco il nome del file attuale:

Modulename.js 

Case-sensitive; Windows non lo è, linux (e quindi AWS) lo è.

0

Nome file:
app.js
Lambda funzione in "app.js":
exports.handler = function (evento, contesto) ...
Lambda Handler su Amazon Console: (. {app} js + esportazioni {handler} = app.handler)
app.handler

Quando si decomprime la cartella, si dovrebbe vedere:
app.js
node_modules

Problemi correlati