我有以下项目树
其中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"
},
因此,节点可以查找子文件夹内的节点模块