我正在使用Firebase设置一个新项目,在运行firebase init functions
命令后,我得到以下错误。
firebase : File C:\Users\fudge\AppData\Roaming\npm\firebase.ps1 cannot be loaded. The file C:\Users\fudge\AppData\Roaming\npm\firebase.ps1 is not digitally signed.
You cannot run this script on the current system. For more information about running scripts and setting execution policy, see about_Execution_Policies at
https:/go.microsoft.com/fwlink/?LinkID=135170.
At line:1 char:1
+ firebase init functions
+ ~~~~~~~~
+ CategoryInfo : SecurityError: (:) [], PSSecurityException
+ FullyQualifiedErrorId : UnauthorizedAccess
我知道我能跑
Set-ExecutionPolicy -ExecutionPolicy Unrestricted
允许它运行,但这似乎很危险,因为我想我也会允许恶意脚本运行,如果我的电脑曾经得到任何。有什么原因,为什么Firebase软件包没有数字签名,无论如何使用firebase
没有改变执行策略?
在init命令之前,我只使用了这三个命令,使用Node v12.14.0:
npm init
npm install firebase-functions@latest firebase-admin@latest --save
npm install -g firebase-tools
2条答案
按热度按时间x4shl7ld1#
我在VSCode终端中得到了同样的错误,所以我在命令提示符下运行了该命令,它对我有效。
4xy9mtcn2#
你会遇到很多没有签名的脚本。只有作者可以回答:
是否有任何原因导致Firebase软件包未进行数字签名
...这对于你遇到的任何未签名的脚本都是正确的。尽管如此,没有什么能阻止你签署任何脚本,如果不是的话。然而,这是你的选择。
根据您正在运行的PowerShell版本,在默认安装中,OS级别配置,ExecutionPolicy设置为受设计限制。
这不会阻止您运行脚本,因为您可以在ISE中加载脚本并按F8,它就会运行。firebase脚本可能会在命令提示符下运行。
你可以复制并粘贴整个脚本到consolehost中,一旦你按下enter,它也会运行。
当然,这不是运行脚本的自动化方式。
默认情况下,当前ExecutionPolicy设置设置为RemoteSigned,因此本地脚本可以运行,所有其他脚本必须签名才能运行。
有许多方法可以允许PowerShell脚本运行,而无需更改主机操作系统ExecutionPolicy设置。在大多数企业中,此设置是通过GPO进行和实施的。如果您现在或将来都是这种情况,那么无论如何都无法更改它。
PowerShell ExecutionPolicy有一个作用域,您可以使用其中的任何一个在用户上下文中运行脚本,甚至是进程上下文中,给定的ExecutionPolicy仅在运行期间有效。
根据帮助文件:
About Execution Policies
执行策略范围您可以设置仅在特定范围内有效的执行策略。
Scope的有效值为:
MachinePolicy、UserPolicy、Process、CurrentUser和LocalMachine。
LocalMachine是设置执行策略时的默认值。
范围值按优先级顺序列出。优先的策略在当前会话中有效,即使在较低的优先级设置了限制性更强的策略。
有关详细信息,请参阅Set-ExecutionPolicy。
MachinePolicy由组策略为计算机的所有用户设置。
由组策略为计算机的当前用户设置的UserPolicy。
流程
进程范围仅影响当前PowerShell会话。
执行策略保存在环境变量$env:PSExecutionPolicyPreference中,而不是注册表中。当PowerShell会话关闭时,变量和值将被删除。
当前用户
***执行策略仅影响当前用户。***它存储在HKEY_CURRENT_USER注册表子项中。
LocalMachine执行策略影响当前计算机上的所有用户。它存储在HKEY_LOCAL_MACHINE注册表子项中。
有许多方法可以绕过限制性执行策略,如下所述:
15 Ways to Bypass the PowerShell Execution Policy
您对将默认操作系统ExecutionPolicy设置为Unrestricted的担忧是谨慎的。不要,如上所述,没有理由这样设置。为每个会话或用户设置ExecutionPolicy。