当前
- 我有一个本地测试环境设置。
- 我正在尝试迁移到无服务器,并设置无服务器脱机进行本地测试。
我无法让我现有的客户端 + 服务器运行,以及无服务器离线。
目录:
root:
- package.json
- /my-project
-- /serverless
--- ...
-- handler.js
-- serverless.yml
包。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.
注意:当我在my-project
中运行serverless offline start
时,该命令成功执行并且无服务器脱机运行。
问题
- 有没有
serverless offline start
办法在/my-project
或 - 我需要重新组织目录结构吗?
笔记
我尝试了从不同的存储库中回答运行npm脚本,但未能使其正常工作。也许是因为我正在尝试运行命令(即无服务器),而不是来自不同目录上下文的脚本文件。
这个问题与无服务器无关,而是我在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""
}
在无服务器中,若要添加无服务器"子"项目,必须在主无服务器文件中指示属于其他包的函数。
例如,如果您有结构。
root:
----serverless.yml
----handler.js
----package.json
----index.functions.yml
----src/
-------/serverless.yml
-------/package.json
-------/handler.js
-------/index.functions.yml
-------/handler.js
然后,您必须在主无服务器.yml文件中具有这样的内容:
service: main-serverless
plugins:
- serverless-offline
functions:
- ${file(./index.functions.yml)}
- ${file(./src/index.functions.yml)}
如果你想在包内操作,你必须尝试使用lerna,有了它,你可以从根目录处理嵌套包。
希望对您有所帮助。