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

Serverless Framework sls Conflicts with Powershell sls (Select-string)

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

npm install -g serverless

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

sls --version

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

PowerShell 似乎有一个名为 Select-String 的 command/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"。

对于未来的访问者 - 在当前版本中(如果 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

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

我使用 Chocolaty 解决了这个问题。

而不是 npm install serverless 使用 choco install serverless 代替 windows,

参考:https://www.serverless.com/framework/docs/getting-started/