从lambda层加载时无服务器脱机未定义模块
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了从lambda层加载时无服务器脱机未定义模块相关的知识,希望对你有一定的参考价值。
我有以下项目树
其中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 层
Expo大作战(十三)--expo如何自定义状态了stateBar以及expo中如何处理脱机缓存加载 offline support
Lambda:找不到模块 './drivers/node-mongodb-native/connection'”,虽然添加了 mongoose 层