【问题标题】:Serverless plugin "serverless-offline" not found. Make sure it's installed and listed in the "plugins" section of your serverless config file未找到无服务器插件“无服务器离线”。确保它已安装并列在无服务器配置文件的“插件”部分
【发布时间】:2018-02-28 08:59:52
【问题描述】:

当我部署我的 SLS 项目时,我收到以下错误:

未找到无服务器插件“无服务器离线”。确保它是 已安装并列在无服务器的“插件”部分 配置文件

但我确实正确安装了插件serverless-offline,请有人帮我修复它。

这是我的serverless.yml 文件:

   service: email-sender

    provider:
      name: aws
      runtime: nodejs4.3

    functions:
      send:
        handler: handler.send
        events:
          - http:
              path: submissions
              method: post
              response:
                headers:
                  Content-Type: "text/json"
              cors:
                origins:
                  - '*'
    package:
      exclude:
        - node_modules/**
      include:
        - node_modules/serverless-offline/**

    plugins:
      - serverless-offline

【问题讨论】:

  • 为什么要排除node_modules/**?您的 lambda 函数将需要您的依赖项才能运行。
  • @Quentin Hayot 谢谢你没有注意到
  • 解决了您的问题吗?

标签: amazon-web-services serverless-framework


【解决方案1】:

我在 bitbucket 管道上遇到了类似的问题。我通过使用以下内容更新bitbucket-pipelines.yml 文件的“脚本”部分解决了这个问题(经过多次试验和错误):

          script:
            - npm install -g npm
            - npm install --save-dev
            - pipe: atlassian/serverless-deploy:1.1.1
              variables:
                AWS_ACCESS_KEY_ID: $KEY_DEFINED_ON_BITBUCKET
                AWS_SECRET_ACCESS_KEY: $KEY_DEFINED_ON_BITBUCKET

另外,检查您的package.json 并确保serverless-offline 包和serverless.yml 文件中的任何其他插件都包含在devDependencies 中。

非常感谢K Manoj Kumar's answer 提供线索。

如果您没有使用 bitbucket 管道,我觉得将 bitbucket-pipelines.yml 文件中的“管道”部分替换为 npm run deploy 之类的内容,并将 "deploy": "serverless deploy" 添加到您的 package.json 的“脚本”部分中会起作用。

【讨论】:

    【解决方案2】:

    请确保 serverless-offline 包包含在 dev 依赖项中,如果没有则添加它

    “无服务器离线”:“3.20.2”

    然后运行,

    npm install --save-dev
    

    这解决了我的问题。

    【讨论】:

      【解决方案3】:

      要在运行自动 CI 管道时或在本地解决此错误,请尝试以下操作:

      - npm config set prefix /usr/local
      - npm install -g serverless
      - npm install serverless-offline -g
      - npm install --save-dev
      - serverless deploy --stage production --verbose
      

      另外,检查您的 package.json 并确保 serverless-offline 包包含在 devDependencies 中。

      这为我解决了这个问题。

      无服务器快乐!

      【讨论】:

        【解决方案4】:

        无服务器离线是一个插件,只能在您的开发机器上运行,而不是在生产中。

        要启用它,请将以下内容添加到serverless.yml

            plugins:
              - serverless-offline
        

        并删除以下行

              include:
                - node_modules/serverless-offline/**
        

        还要检查您的package.json 并确保它是devDependencies

        【讨论】:

        • 除非你在包中包含 node-modules/serverless-offline,否则部署失败,如果你列出了插件。
        猜你喜欢
        • 2022-11-03
        • 2020-01-28
        • 1970-01-01
        • 2015-12-05
        • 2015-05-21
        • 2020-12-09
        • 1970-01-01
        • 2023-03-27
        • 2019-01-11
        相关资源
        最近更新 更多