无服务器框架sls与Powershell sls冲突(选择字符串)

Mik*_*Dev 9 powershell node.js serverless-framework

我使用以下NPM命令安装了无服务器框架

npm install -g serverless
Run Code Online (Sandbox Code Playgroud)

当我尝试sls在Powershell中运行无服务器命令时,我得到一个奇怪的结果,提到"cmdlet Select-string".

sls --version
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

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

Mik*_*Dev 13

似乎PowerShell有一个名为Select-String的命令/ cmdlet,其别名为sls.PowerShell别名sls似乎优先于sl的node.js无服务器命令.

删除PowerShell sls别名的一种方法是在PowerShell中运行以下命令

Remove-Item alias:sls
Run Code Online (Sandbox Code Playgroud)

此更改仅适用于当前的PowerShell会话.

要永久保存sls PowerShell别名,您可以更改Microsoft.PowerShell_profile.ps1文件.

从PowerShell使用以下命令在记事本中打开您的配置文件页面:

notepad $profile
Run Code Online (Sandbox Code Playgroud)

将以下内容添加到文件并保存.

remove-item alias:sls
Run Code Online (Sandbox Code Playgroud)

可以通过从Powershell运行以下内容来重新加载配置文件

. $profile
Run Code Online (Sandbox Code Playgroud)

在我的文件中,您将看到我删除了curl和sls的别名.

更改PowerShell配置文件

现在,我在PowerShell中输入sls时会看到我的期望. 在此输入图像描述

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

---更新----

更简单的选择是使用命令"serverless"而不是"sls".

  • 为了将来参考,[别名*总是*在powershell尝试解析非限定命令名时优先](https://msdn.microsoft.com/en-us/powershell/reference/5.1/microsoft.powershell.core/about/about_command_precedence ) (2认同)

gre*_*ort 6

对于未来的访问者 - 在当前版本中(如果serverless由 安装npm/yarn^1.61有一个辅助快捷方式选项:

slss
Run Code Online (Sandbox Code Playgroud)

并且该快捷方式在 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
Run Code Online (Sandbox Code Playgroud)

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