npm 运行 多个服务,包括来自不同目录的无服务器离线

npm run multiple services including serverless offline from different directories

目前

  1. 我有一个本地测试环境设置。
  2. 我正在尝试迁移到 serverless 并设置 serverless-offline 进行本地测试。

我无法将我现有的客户端 + 服务器连接到 运行,同时 serverless-offline

目录:

root:
- package.json
- /my-project
-- /serverless
--- ...
-- handler.js
-- serverless.yml

PACKAGE.JSON <-- 同时使用 运行 多个服务同时

"scripts": {
    "start": "concurrently \"npm start --prefix client\" \"node index.js\" \"serverless offline start\""
  }

问题

在根目录下运行ning npm start时,返回如下错误:

Serverless command "offline" not found. Did you mean "config"? Run "serverless help" for a list of all available commands.

注意:当我在\my-project运行serverless offline start时,命令执行成功并且serverless-offline运行s .

问题

  1. 有没有办法在 /my-project
  2. 的上下文中 运行 serverless offline start 命令
  3. 我需要重新组织我的目录结构吗?

注释

我已经尝试回答 但没能成功。也许是因为我正在尝试 运行 命令(即无服务器)而不是来自不同目录上下文的脚本文件。

在无服务器中,要添加无服务器“子”项目,您必须在无服务器主文件中指明属于其他包的功能。

例如,如果您有结构。

root:
----serverless.yml
----handler.js
----package.json
----index.functions.yml
----src/
-------/serverless.yml
-------/package.json
-------/handler.js
-------/index.functions.yml
-------/handler.js

然后,您的 serverless.yml 主文件中必须有这样的内容:

    service: main-serverless
    plugins:
      - serverless-offline
    functions:
      - ${file(./index.functions.yml)}
      - ${file(./src/index.functions.yml)}

如果你想在包内部操作,你必须尝试使用​​ lerna,你可以使用它来处理根目录中的嵌套包。

希望对您有所帮助。

这个问题与无服务器无关,而是我在 package.json 中设置脚本的新手经验。父项目文件夹中有 2 个选项 运行 serverless offline start

选项 1

在调用 serverless offline start

之前插入 cd my-project &&
"scripts": {
    "start": "concurrently \"npm start --prefix client\" \"node index.js\" \"cd my-project && serverless offline start\""
  }

选项 2

--prefix my-project 添加到 serverless offline start 命令。 注意:我没有测试选项2

"scripts": {
    "start": "concurrently \"npm start --prefix client\" \"node index.js\" \"serverless offline start --prefix my-project\""
  }