带有 AWS Lambda 错误“找不到模块”的无服务器框架

新手上路,请多包涵

我正在尝试使用无服务器框架来创建一个使用开放天气 NPM 模块的 Lambda 函数。但是,我收到以下异常,但我的 node_modules 包含特定的库。

我已成功运行示例( https://github.com/serverless/examples/tree/master/aws-node-rest-api-with-dynamodb ),现在正在添加节点模块以集成开放天气 API .

 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

我的代码

'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);
  };

原文由 Charith De Silva 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 855
2 个回答

在执行 npm install 之前,您是否在工作目录中 serverless deployaws-sdk 节点模块可用于所有 lambda 函数,但对于所有其他节点依赖项,您必须安装它们,以便在部署时将它们与您的 lambda 打包。

您可能会在无服务器存储库中发现此问题很有帮助 ( https://github.com/serverless/serverless/issues/948 )。

原文由 marcusmolchany 发布,翻译遵循 CC BY-SA 3.0 许可协议

我在 package.json 中修复了这个错误,我将所有内容从 devDependencies 移动到 dependencies

干杯

原文由 user1398619 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题