0

目前

  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 脚本,但未能使其正常工作。也许是因为我试图运行一个命令(即无服务器)而不是来自不同目录上下文的脚本文件。

4

2 回答 2

0

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

例如,如果你有结构。

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

希望能帮助到你。

于 2019-11-17T05:33:30.187 回答
0

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

选项1

cd my-project &&调用前插入serverless offline start

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

选项 2

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

"scripts": {
    "start": "concurrently \"npm start --prefix client\" \"node index.js\" \"serverless offline start --prefix my-project\""
  }
于 2019-11-17T22:20:23.590 回答