无服务器框架 sls 与 Powershell sls 冲突(选择字符串)
Posted
技术标签:
【中文标题】无服务器框架 sls 与 Powershell sls 冲突(选择字符串)【英文标题】:Serverless Framework sls Conflicts with Powershell sls (Select-string) 【发布时间】:2017-09-04 07:08:27 【问题描述】:我使用以下 NPM 命令安装了无服务器框架
npm install -g serverless
当我尝试在 Powershell 中运行无服务器命令 sls
时,我得到一个奇怪的结果,其中提到了“cmdlet Select-string”。
sls --version
有人可以帮我解决这个问题吗?
【问题讨论】:
简单:从命令提示符运行...而不是powershell 【参考方案1】:似乎 PowerShell 有一个名为 Select-String 的命令/cmdlet,其别名为 sls。 PowerShell 别名 sls 似乎优先于 sls 的 node.js 无服务器命令。
删除 PowerShell sls 别名的一种方法是在 PowerShell 中运行以下命令
Remove-Item alias:sls
此更改仅适用于当前的 PowerShell 会话。
要永久使用 sls PowerShell 别名,您可以更改 Microsoft.PowerShell_profile.ps1 文件。
在 PowerShell 中使用以下命令在记事本中打开您的个人资料页面:
notepad $profile
将以下内容添加到文件中并保存。
remove-item alias:sls
可以通过从 Powershell 运行以下命令重新加载配置文件
. $profile
在我的文件中,你会看到我已经删除了 curl 和 sls 的别名。
现在我看到了在 PowerShell 中输入 sls 时的预期结果。
How do I permanently remove a default Powershell alias?
--- 更新----
一个更简单的选择是使用命令“serverless”而不是“sls”。
【讨论】:
供以后参考,aliases always takes precedence when powershell tries to resolve unqualified command names @Mathias - 感谢您的链接。很高兴知道 about 命令的优先级。 我遇到了同样的问题,这对我有用。谢谢【参考方案2】:对于未来的访问者 - 在当前版本中(如果 serverless
由 npm/yarn
安装)^1.61
有一个辅助快捷方式选项:
slss
并且该快捷方式在 Powershell 中完美运行。 Imo 这是避免Select-String
别名冲突问题的最简单方法,并且不需要对 Powershell 会话或配置进行任何更改。
PS C:\htdocs\serverless> slss -v
Framework Core: 1.61.1
Plugin: 3.2.7
SDK: 2.2.1
Components Core: 1.1.2
Components CLI: 1.4.0
如果serverless
由chocolatey
安装(正如@Nick Cox 在评论中提到的那样)slss
方法将失败,您可以使用他建议的方法 - sls.exe
【讨论】:
对于未来的访问者:请注意,从 1.61 开始,chocolatey 安装似乎没有此别名。如果您通过 Chocolatey 安装,另一种方法是调用sls.exe
而不仅仅是 sls
。【参考方案3】:
我可以通过使用Chocolaty 解决这个问题。
Windows 使用 choco install serverless
代替 npm install serverless
,
参考:https://www.serverless.com/framework/docs/getting-started/
【讨论】:
以上是关于无服务器框架 sls 与 Powershell sls 冲突(选择字符串)的主要内容,如果未能解决你的问题,请参考以下文章