serverless - serverless-bundle 缺少依赖项
问题描述
我无法使用无服务器捆绑插件生成捆绑包。
tsconfig.json
{
"compilerOptions": {
"lib": ["es2017"],
"module": "esnext",
"moduleResolution": "node",
"resolveJsonModule": true,
"target": "es2017",
"outDir": "dist",
"declaration": true,
"sourceMap": true,
"baseUrl": ".",
"esModuleInterop": true,
"allowSyntheticDefaultImports": true,
"allowJs": false,
"skipLibCheck": true,
"forceConsistentCasingInFileNames": true
},
"exclude": ["./dist/**/*", "./node_modules/**/*"]
}
无服务器.yml
service: serverless-boilerplate
custom:
# Our stage is based on what is passed in when running serverless
# commands. Or falls back to what we have set in the provider section.
stage: ${opt:stage, 'offline'}
region: ${opt:region, 'us-east-1'}
bundle:
linting: false
serverless-offline:
httpPort: 4000
noPrependStageInUrl: true
provider:
name: aws
runtime: nodejs14.x
memorySize: 512
timeout: 10
logRetentionInDays: 90
lambdaHashingVersion: 20201221 # https://www.serverless.com/framework/docs/deprecations/#LAMBDA_HASHING_VERSION_V2
logs:
httpApi: true
httpApi:
# metrics: true # Enable if you need
cors: true
functions:
app:
handler: src/handler.handler
# reservedConcurrency: 100
events:
- httpApi:
path: '/{proxy+}'
method: '*'
package:
individually: true
plugins:
- serverless-dotenv-plugin
- serverless-bundle
- serverless-offline
这是.serverless/app.zip
运行后的文件sls package
如您所见,没有node_modules
文件夹。
如果我启动应用程序sls offline start --stage offline
它看起来像是试图读取 node_modules 中自己的包文件夹中的目录(资源)的依赖项之一:
但是由于将所有内容serverless-bundle
合并handler.js
到中,因此没有node_modules
文件夹和依赖文件夹,因此 readdir() 失败。
我做错了什么?
解决方案
看起来像添加externals: all
到修复了这个问题custom.bundle
。serverless.yml
推荐阅读
- flutter - 切换选项卡时防止 StreamBuilder 重新加载
- python - 如何创建一个按钮来结束程序而不结束 GUI?
- azure - 如何在 U-SQL 中使用子查询?
- directx-11 - 创建顶点着色器时直接 x 11 无效参数
- r - 切断功能中间图
- javascript - 将 href 附加到当前 url 的标记,而不是直接链接到 href 内部的内容
- css - 适用于桌面和移动设备的两列卡片布局
- ruby - Rspec 返回“意外的'{',期待keyword_end”的语法错误
- html - 如何使 1920-1080px html 页面适合屏幕并删除空白
- c++ - Enet:enet 可以处理多少个连续的连接?