如何修复错误- nodemon.ps1无法加载,因为在此系统上禁用了运行脚本(不带安全风险)?

144
在终端出现错误:nodemon.ps1无法加载,因为此系统上禁用了运行脚本。更多 信息请参见about_Execution_Policies
我有一个解决方法来修复这个问题: 1. 使用管理员身份打开Windows PowerShell。
2. 运行以下命令:Set-ExecutionPolicy Unrestricted 这样可以解决问题,但会显示安全风险警告。 我的问题是:是否有其他不带安全风险的解决方法?目标是使用 nodemon

你能提供更多细节吗? - jaibalaji
1
请阅读有关执行策略的帮助文件。关于执行策略-PowerShell | Microsoft Docs 在正常操作中,几乎没有理由使用无限制的EP。RemoteSigned是默认设置。您的主机应该设置为最受限制的,以适合您或您的组织。您可以使用不同的EP运行PowerShell会话/脚本。EP不是安全边界。 - postanote
19个回答

344
我建议使用RemoteSigned而不是Unrestricted,如果可能的话,将策略限制在CurrentUser上。
以管理员身份运行Powershell,然后执行以下操作:
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser

RemoteSigned:Windows 服务器计算机的默认执行策略。



除此之外,我不会过于担心这个问题,因为它并不是一个安全机制。请参考文档中的以下引用:

“执行策略并不是限制用户操作的安全系统。例如,当用户无法运行脚本时,他们可以轻松地通过在命令行中输入脚本内容来绕过策略。相反,执行策略帮助用户设定基本规则,并防止他们无意中违反这些规则。”


2
有没有办法通过命令提示符来设置这个策略? - Tommy Hoang
3
@TommyHoang,请以管理员身份运行CMD,然后输入以下命令:cmd.exe /c powershell -command Set-ExecutionPolicy RemoteSigned - derekbaker783
5
表现得像冠军一样,谢谢伙计。 - Tuan Phan
1
它正常工作。 - Bhavin Thummar

58

对于不知道如何使用Windows PowerShell解决此错误的人

  1. 打开PowerShell(以管理员身份运行)
  2. 使用此命令检查当前执行策略
    Get-ExecutionPolicy
    # You should get 'Restricted'

运行此命令以将其设置为“无限制”。
    Set-ExecutionPolicy Unrestricted
  1. 再次运行此命令检查执行策略是否已更改
    Get-ExecutionPolicy
    # You should get 'Unrestricted'
  1. 现在尝试在您的项目上运行nodemon

    nodemon 'filename.js'

希望这对您有所帮助。


1
在这种情况下,将执行策略设置为“不受限制”是不必要且非最优的,有点像脚枪。 - derekbaker783
2
这节省了我的时间。我非常感激。 - 4xMafole
2
这对我来说真的非常有效。谢谢! - Matin

47

步骤1:前往此位置 --> 文件 C:\Users\Dell\AppData\Roaming\npm
步骤2:删除 nodemon.ps1 文件并运行命令。


2
这是最简单的方法,而且它有效了,谢谢。 - Ahmed Hosny
1
太棒了,你能解释一下吗? - Dani

21

允许在本地机器上运行远程签名脚本与安全风险完全无关。它基本上意味着您可以执行本地未签名脚本,即由您编写的脚本,而来自远程源(此处为nodemon)的脚本必须由受信任的权威进行签名。

P.S: 如果您使用Windows系统,您只需转到“设置”>>“更新和安全”>>“开发人员选项”>>选择旁边的框 更改执行策略以允许本地powershell脚本无需签名即可运行


谢谢,这对我有用。 但是需要注意的是,复选框已经被选中了,所以我切换了一下它,问题就解决了。 对我来说,使用的账户是我儿子的儿童账户,属于糟糕的家庭产品,具有管理员权限,所以我相信这个问题是由家庭产品引起的。 - undefined

17
这个命令可能会有所帮助。
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser

1
那对我起作用了,服务器正在使用localhost:5000工作。 - Salman Aziz

12

我有一个更好的解决方案,只需进入 nodemon.ps1 文件所在文件夹(路径错误),然后删除 nodemon.ps1 文件。

现在进入终端并运行 nodemon -v,如果你得到了一个版本号,那么问题就解决了。


8

您可以在不更改策略的情况下完成此操作。

C:\Users\HP MICROTECH\AppData\Roaming\npm\nodemon.ps1(错误屏幕上给出路径)。

只需转到此路径并删除nodemon.ps1文件即可。

这样就可以运行您的nodemon。


注意到那里有两个脚本。一个是cmd脚本,而另一个是powershell脚本。如果删除powershell脚本,它将默认使用cmd脚本,但您会注意到一个非常小的延迟,这在某种程度上并不明显。 - Laredo
完美而简单。一旦删除后,我使用“nodemon start”成功启动nodemon。谢谢! - Mohamad Ghaith Alzin

8

摆脱这个错误的最佳方法是
以管理员身份在您的Windows PowerShell中运行以下命令:

Set-ExecutionPolicy RemoteSigned -Scope CurrentUser

基本上它会要求您更改执行策略,然后键入Y。

                  **OR**

你可以在不改变执行策略的情况下执行以下操作:
  1. 使用此命令安装 nodemon: npm i nodemon -g
  2. 然后输入 nodemon -v,你将看到错误的第一行中出现了路径,进入该路径,然后删除那个名为 nodemon.ps1 的文件或带有 .ps1xml 扩展名的文件。
请确保你正在全局安装 nodemon。 更多详情请参阅 Microsoft 执行策略文档

8

在使用npm时,我建议在scripts部分桥接nodemon命令,并保留安全设置。

package.json:

{
    "scripts": {
        "hmr": "nodemon index.js",
        "nodemon": "npm run hmr",
        "start": "node index.js"
    },
    "dependencies": {}
}

只需执行npm run nodemon即可在后台运行hmr行。

4

这个命令可以正常工作。

Set-ExecutionPolicy RemoteSigned -Scope CurrentUser


1
这个答案没有提供任何新的内容。 - derekbaker783

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