无服务器框架 Serverless Framework 与 Powershell sls (Select-string) 发生冲突。

23

我使用以下 NPM 命令安装了 Serverless 框架

npm install -g serverless
当我在Powershell中尝试运行无服务器命令sls时,我得到一个奇怪的结果,其中提到“cmdlet Select-string”。
sls --version

在此输入图片描述

有人能帮我解决这个问题吗?


简单:从命令提示符中运行...而不是PowerShell。 - Akber Iqbal
3个回答

41

似乎PowerShell有一个名为Select-String的命令/cmdlet,它有一个别名叫做sls。 PowerShell的别名sls似乎比node.js无服务器命令sls更优先。

删除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的别名。

Change PowerShell Profile

现在,在PowerShell中输入sls时,我看到了我期望看到的内容。enter image description here

如何永久删除默认的PowerShell别名?

--- 更新 ----

更简单的选项是使用命令“serverless”而不是“sls”。


2
为了日后参考,别名总是优先于 PowerShell 尝试解析未限定命令名称 - Mathias R. Jessen
@Mathias - 谢谢你提供的链接。了解命令优先级真是太好了。 - Mike Barlow - BarDev
我遇到了同样的问题,这个方法对我有用。谢谢。 - Maahi Bhat

6

对于未来的访问者 - 在当前版本中(如果通过npm/yarn安装了serverless),^1.61存在第二个快捷选项:

slss

这个快捷方式在PowerShell中非常有效。我认为这是避免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

如果使用 chocolatey 安装了 serverless(如评论中的 @Nick Cox 所提到的),则 slss 方法会失败,您可以使用他建议的方法 - sls.exe

1
对于以后的访客:请注意,截至1.61版本,chocolatey安装不包含此别名。如果您是通过chocolatey进行安装的,另一种选择是调用“sls.exe”而不仅仅是“sls”。 - Nick Cox

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接