web-dev-qa-db-fra.com

Framework sans serveur avec erreur AWS Lambda "Impossible de trouver le module"

J'essaie d'utiliser le Framework sans serveur pour créer une fonction Lambda qui utilise le module NPM météo ouvert. Cependant, je reçois l'exception suivante, mais mes modules node_modules contiennent la bibliothèque spécifique.

J'ai réussi à exécuter l'exemple, ( https://github.com/serverless/examples/tree/master/aws-node-rest-api-with-dynamodb ) avec succès, maintenant piratage pour ajouter module de nœud pour intégrer l'API Open Weather.

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

Mon 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);          
  };
9
Charith De Silva

As tu npm install dans votre répertoire de travail avant de faire votre serverless deploy? Le aws-sdk le module de noeud est disponible pour toutes les fonctions lambda, mais pour toutes les autres dépendances de noeud, vous devez les installer afin qu'elles soient fournies avec votre lambda lors du déploiement.

Vous pouvez trouver ce problème sur le référentiel sans serveur utile ( https://github.com/serverless/serverless/issues/948 ).

15
marcusmolchany

J'ai corrigé cette erreur lorsque dans package.json J'ai tout déplacé de devDependencies vers dependencies.

À votre santé

2
user1398619

Vous devez effectuer le déploiement du package au cas où vous auriez des dépendances externes. Veuillez voir cette réponse

AWS Node JS avec requête

Référence

http://docs.aws.Amazon.com/lambda/latest/dg/nodejs-create-deployment-pkg.html

1
bibek shrestha

J'ai le même problème avec le framework sans serveur pour déployer plusieurs fonctions lambda. J'ai corrigé par les étapes suivantes

  1. Quoi que vous gardiez le chemin du gestionnaire comme handler: foldername/exports.handler
  2. Nommez le fichier dans le dossier comme exports.js (quel que soit le nom du gestionnaire)
  3. courir serverless deploy

Cela devrait résoudre votre problème

0

Vous avez le même problème. A utilisé le modèle de nœud sans serveur et n'a pas fait de npm init ensuite.

0
d0utone