无服务器框架 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】:

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

【讨论】:

对于未来的访问者:请注意,从 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 冲突(选择字符串)的主要内容,如果未能解决你的问题,请参考以下文章

sls 离线启动,无服务器警告:发现功能不受支持的运行时“nodejs8.10”

阿里云服务网格ASM集成SLS告警

无服务器框架 AWS 跨账户自定义授权方

无服务器部署 - 未找到函数 - sls deploy

如何在无服务器框架中包含静态文件?

“sls dynamodb start”抛出 spawn java ENOENT