首页 > 解决方案 > npm 从不同目录运行多个服务,包括无服务器离线

问题描述

目前

  1. 我有一个本地测试环境设置。
  2. 我正在尝试迁移到无服务器并设置无服务器离线以进行本地测试。

我无法让我现有的客户端 + 服务器与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\""
  }

问题

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

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

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

问题

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

笔记

我已经尝试从不同的存储库回答运行 npm 脚本,但未能使其正常工作。也许是因为我试图运行一个命令(即无服务器)而不是来自不同目录上下文的脚本文件。

标签: node.jspackage.jsonserverlessserverless-offlineconcurrently

解决方案


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

例如,如果你有结构。

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,用它你可以处理来自根目录的嵌套包。

希望能帮助到你。


推荐阅读