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

问题描述 投票:4回答:1

我有以下项目树

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路径指向图层文件夹,一旦我需要推送到生产,它就会将路径更改为正确的路径

amazon-web-services serverless-framework serverless
1个回答
4
投票

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

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.