使用 serverless compose 部署时抛出 `spawn serverless ENOENT` 错误。

7

使用serverless部署时遇到错误 spawn serverless ENOENT,在此之前所有服务都已部署。

错误:spawn serverless ENOENT

使用以下版本的serverless和serverless compose

"@serverless/compose": "^1.3.0",
"serverless": "^3.22.0",

serverless-compose.ts 配置

const serverlessCompose = {
  services: {
    "infra-test": {
      path: "infra-test",
    },
    "client-service": {
      path: "client-'service'",
      dependsOn: ["infra-test"],
    },
  },
};

module.exports = serverlessCompose;

完整的命令名称和使用的标志(如果不适用,请填写 "N/A")

serverless deploy --stage sbx

完整的命令输出。

infra-test › 
infra-test › Stack Outputs:
infra-test ›   ServerlessDeploymentBucketName: infra-test-sbx-serverlessdeploymentbucket-yg91fd
infra-test › 3 deprecations found: run 'serverless doctor' for more details
infra-test › deployed
client-service › deploying
client-service › Running "serverless deploy --stage sbx"
client-service › error
client-service › spawn serverless ENOENT
client-service › Error: spawn serverless ENOENT
client-service ›     at Process.ChildProcess._handle.onexit (node:internal/child_process:283:19)
client-service ›     at onErrorNT (node:internal/child_process:476:16)
client-service ›     at processTicksAndRejections (node:internal/process/task_queues:82:21)
  1. 我使用以下命令将 serverless-dynamodb-local 版本从 0.2.40 降级到 0.2.30
npm uninstall serverless-dynamodb-local
sls dynamodb uninstall

npm install serverless-dynamodb-local@0.2.30
sls dynamodb install
  1. removed all serverless local dependacies used by service
  2. tried with single lambda function as service earlier was having lot of lambdas
  3. installed sls dynamodb & java using sls dynamodb install java
    ➜  sls-compose git:(main) ✗ java --version
         openjdk 19 2022-09-20
         OpenJDK Runtime Environment Homebrew (build 19)
         OpenJDK 64-Bit Server VM Homebrew (build 19, mixed mode, sharing)
    
1个回答

3
问题出在 serverless-compose.ts 的配置中。
   "client-service": {
      path: "client-'service'",
      dependsOn: ["infra-test"],
    }

在路径“client-'service'”中有一个单引号,这是一个语法错误导致了这个问题。

正确的代码片段如下:

 "client-service": {
      path: "client-service",
      dependsOn: ["infra-test"],
    },

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