typescript - 如何访问 serverless.ts 中无服务器 cli 传递的选项值?
问题描述
当我使用 serverless.ts 进行设置的无服务器框架时,我遇到了一个问题。
我可以像这样在无服务器 cli 上传递值
serverless offline --stage prod
在 serverless.yml 中,我们可以通过${self:provider.stage}
但我无法在 serverless.ts 上访问它。当然,我知道它可以替换为常量变量,并且不要在 cli 上传递值。但我说我永远无法访问 serverless.ts 上传递的值。有什么办法???
解决方案
TL;DR:我的解决方法是使用导出的函数serverless/lib/utils/resolveCliInput
。
我不确定我是否理解正确,但如果您的问题是如何从内部访问传递给无服务器 CLI 的值,serverless.(ts|js)
那么我有一个解决方法。
我遇到了这个问题,谷歌搜索了一段时间后找不到任何解决方案,所以我开始挖掘serverless
源代码。我注意到这个文件serverless/lib/utils/resolveCliInput
导出了一个解析输入参数的函数。
老实说,我不知道我们是否可以在框架的未来版本中依赖这个函数(我已经用 2.8.0 版本进行了测试),但这里有一个工作代码示例:
import resolveCliInput from 'serverless/lib/utils/resolveCliInput';
const { commands, options } = resolveCliInput(process.argv.slice(2));
const stage = options.s ?? options.stage ?? 'dev';
当然我们可以使用一些库来解析process.argv
,比如commander,甚至可以解析我们代码中的args。
推荐阅读
- r - 面板数据中的月协方差计算 -r
- python - /admin/myschoolweb/album/add/ 处的 OperationalError - 没有这样的表:main.auth_user__old
- javascript - 如何在三角形多维数组中填充数字?
- sqlite - 在菜单上调用 startActivity 函数会使应用程序崩溃
- vim - 如何从vim中的跳转列表中删除缓冲区
- c++ - eclipse中的gtest错误:ld.exe找不到-llibgtest
- java - 是否应该将使用 String.indexOf 的 0 长度字符串“”的搜索行为视为未定义?
- hyperledger-fabric - Hyperledger Fabric:如何制作前端?
- c# - 如何设置等待时间等待结果
- model-view-controller - 对主控制器的 ASP.NET Core 常量请求