首页 > 解决方案 > 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() 失败。

我做错了什么?

标签: serverlessserverless-frameworkserverless-bundle

解决方案


看起来像添加externals: all到修复了这个问题custom.bundleserverless.yml


推荐阅读