从lambda层加载时无服务器脱机未定义模块

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了从lambda层加载时无服务器脱机未定义模块相关的知识,希望对你有一定的参考价值。

我有以下项目树

enter image description here

其中nodejs文件夹是在以下serverless.yaml中定义的lambda层

service: aws-nodejs # NOTE: update this with your service name


provider:
  name: aws
  runtime: nodejs8.10
  stage: dev

plugins:
  - serverless-offline
layers:
  layer1:
    path: nodejs # required, path to layer contents on disk
    name: ${self:provider.stage}-layerName # optional, Deployed Lambda layer name

functions:
  hello:
    handler: handler.hello
    layers:
      - {Ref: Layer1LambdaLayer}
    events:
      - http:
          path: /dev
          method: get

layer1仅包含UUID包。

因此,当我尝试使用无服务器离线插件在本地运行lambda时,它说无法找到模块UUID。

但是当我将代码部署到AWS时,它就像魅力一样运行。

我们可以用任何方式让lambda层在本地运行以进行测试吗?并加快发展?

或者有什么方法可以在开发过程中动态设置node_module路径指向图层文件夹,一旦我需要推送到生产,它就会将路径更改为正确的路径

答案

经过多次试验,我找到了一个有效的解决方案

我添加了一个npm run命令,它将临时的node_module路径导出到路径列表

"scripts": {
    "offline": "export NODE_PATH="${PWD}/nodejs/node_modules" && serverless offline"
  },

因此,节点可以查找子文件夹内的节点模块

以上是关于从lambda层加载时无服务器脱机未定义模块的主要内容,如果未能解决你的问题,请参考以下文章

为 Scikit-image 构建自定义 AWS Lambda 层

SQUID启用脱机模式以使用缓存加载网页

Expo大作战(十三)--expo如何自定义状态了stateBar以及expo中如何处理脱机缓存加载 offline support

Keras 自定义 lambda 层:如何规范化/缩放输出

如何用Keras自定义层?

Lambda:找不到模块 './drivers/node-mongodb-native/connection'”,虽然添加了 mongoose 层