3

Ich versuche, das Serverless Framework zu verwenden, um eine Lambda-Funktion zu erstellen, die Open-Weather-NPM-Modul verwendet. Allerdings bekomme ich die folgende Ausnahme, aber meine node_modules enthalten die spezifische Bibliothek.Serverless Framework mit AWS Lambda-Fehler "Kann Modul nicht finden"

Ich habe es geschafft, das Beispiel zu starten, (https://github.com/serverless/examples/tree/master/aws-node-rest-api-with-dynamodb) erfolgreich, jetzt hacken, um Knotenmodul hinzufügen Open-Weather-API zu integrieren.

Endpoint response body before transformations: {"errorMessage":"Cannot find module 'Openweather-Node'","errorType":"Error","stackTrace":["Module.require (module.js:353:17)","require (internal/module.js:12:17)","Object.<anonymous> (/var/task/todos/weather.js:4:17)","Module._compile (module.js:409:26)","Object.Module._extensions..js 

Mein Code

'use strict'; 

    const AWS = require('aws-sdk'); // eslint-disable-line import/no-extraneous-dependencies 
    var weather = require('Openweather-Node'); 

    const dynamoDb = new AWS.DynamoDB.DocumentClient(); 

    module.exports.weather = (event, context, callback) => { 
    const params = { 
     TableName: process.env.DYNAMODB_TABLE, 
     Key: { 
     id: event.pathParameters.id, 
     }, 
    }; 

    weather.setAPPID("mykey"); 
    //set the culture 
    weather.setCulture("fr"); 
    //set the forecast type 
    weather.setForecastType("daily"); 

    const response = { 
     statusCode: 200, 
     body: "{test response}", 
    }; 
    callback(null, response);   
    }; 

Antwort

7

Haben Sie npm install in Ihrem Arbeitsverzeichnis vor Ihrer serverless deploy tun? Das aws-sdk Knotenmodul ist für alle Lambda-Funktionen verfügbar, aber für alle anderen Knotenabhängigkeiten müssen Sie sie installieren, damit sie bei der Bereitstellung mit Ihrem Lambda-Paket gepackt werden.

Möglicherweise finden Sie dieses Problem auf dem Serverless-Repository hilfreich (https://github.com/serverless/serverless/issues/948).

+0

ausgezeichnet .. hat alles andere als das .. Danke für die schnelle Antwort! – Charith

1

ich das gleiche Problem mit serverless Rahmen haben, um mehrere Lambda-Funktionen bereitstellen. I durch die folgenden Schritte festgelegt

  1. Was auch immer Sie den Pfad wie handler: foldername/exports.handler am Handler halten
  2. Benennen Sie die Datei in dem Ordner als exports.js (was auch immer Sie den Handler nennen)
  3. Lauf serverless deploy

Dies sollte Ihr Problem lösen

+0

Diese Option ist gut, wenn Sie das Lambda mit sam local entwickeln –

Verwandte Themen