无服务器(Serverless)命令"offline"未找到。

18

我正在运行我的nodejs代码,并安装了serverless(npm i -g serverless),但在使用命令sls offline start --CacheInvalidations时,出现以下错误:

Serverless Error ---------------------------------------

未找到Serverless命令“offline”。您是否想要“config”?运行“serverless help”以获取所有可用命令的列表。

获取支持--------------------------------------------

 Docs:          docs.serverless.com
 Bugs:          github.com/serverless/serverless/issues
 Issues:        forum.serverless.com

您的环境信息 ---------------------------

 Operating System:          linux
 Node Version:              12.18.2
 Framework Version:         1.79.0
 Plugin Version:            3.7.1
 SDK Version:               2.3.1
 Components Version:        2.34.6

1
在我的情况下,我已经将模块正确地放置在node_modules下,但仍然无法正常工作。后来我发现问题出在我是从基础应用程序文件夹执行命令>sls offline start,而实际上你必须从SERVICE_FOLDER执行该命令。希望这能帮助到其他人... - Sudheer Kumar
在我的情况下,我不得不运行 sudo npm install serverless -g,然后它就像魔法般地工作了。 - Sami Ullah
9个回答

18

为了使用sls offline命令,您需要使用npm安装serverless-offline插件。

只需简单运行:

npm i -g serverless-offline
在您的设备上进行全局安装,或者。
npm i serverless-offline --save-dev

将其作为活动项目的开发依赖项安装。然后将此配置添加到您的无服务器模板中:

plugins:
  - serverless-offline

了解有关serverless-offline插件的更多信息,请查阅Serverless官方文档:

Serverless Offline | 在开发Serverless项目时本地模拟AWS λ和API Gateway

Serverless Offline NPM


请确保在您的无服务器模板上点击保存,我习惯于使用自动保存的IDE,所以当我切换到其他工具时,我忘记在添加插件后保存了。 - yonadav bar ilan
3
好的,还有一件重要的事情是serverless.yaml必须与node_modules文件夹在同一个文件夹中。 - Matteo
@Madeo,但是通常在创建项目时,无服务器会创建文件夹,我们能否指定插件引用上一级文件夹?这是否可能? - balajivaishnav

4

在我设置serverless.yml文件并在本地运行时,遇到了同样的问题。两个步骤解决了这个问题。

  1. 全局安装serverless-offline包。

npm i -g serverless-offline

  1. 在serverless.yml文件的插件键下添加相同的包。

plugins:
- serverless-offline


2

使用yarn安装依赖,您可以输入以下命令:

安装:

yarn add serverless-offline -D

运行:

yarn serverless offline start

1

还有另一种尝试的方式

 npx serverless plugin install --name serverless-offline

这是用于安装serverless-offline插件的。 您还可以查看可用的插件名称。

npx sls plugin list 

0
你必须安装这个包(可以在项目本地安装,也可以全局安装)。我建议你全局安装。
npm i -g serverless-offline

或者

yarn global add serverless-offline

在您的serverless.yml文件中,插入以下代码到plugins会话: plugins:
- serverless-offline 这将解决您的问题。

0

不确定您是否解决了这个问题,但我遇到了同样的问题,对我来说是一个愚蠢的错误,YML文件的缩进不正确,在修复缩进后,它开始正常工作了


0
  1. 确保 serverless-offline 已经安装(全局或者在项目中)
  2. 将以下代码添加到 serverless.yml 文件中

plugins:
  # Needed to run & debug locally
  - serverless-offline


0

在你的项目中尝试使用npx前缀。例如npx sls offline或者npx serverless offline。这对我来说有效。


0
首先,您必须全局安装Serverless离线。
npm i -g serverless-offline

接下来,您应该检查 serverless.yml 文件。否则,您必须创建 serverless.yml 文件。

service: your-service-name
app: app-name
provider:
  name: aws
  runtime: nodejs10.x
  timeout: 60
  memorySize: 128
  deploymentBucket: bucket-name
# you can overwrite defaults here
  stage: prod
  region: your-aws-region
functions:
  your-function-name:
    handler: handler.dispatch
    memorySize: 128
    timeout: 60
    events:
      #- http: POST /hello
      - http: 'ANY {proxy+}'
plugins:
  - serverless-offline
  - serverless-aws-alias

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接