node.js 命令必须加 npx 才能执行
问题描述
在 Windows 上搭建 Hexo 环境,已经从官网下载安装 node-v18.18.2-x64.msi,并且通过 npm 命令成功安装 hexo。
PowerShell 中,直接执行 hexo 命令报错:
hexo : 无法加载文件 C:\Users\zijia\AppData\Roaming\npm\hexo.ps1,因为在此系统上禁止运行脚本。有关详细信息,请参阅 https
:/go.microsoft.com/fwlink/?LinkID=135170 中的 about_Execution_Policies。
所在位置 行:1 字符: 1
+ hexo
+ ~~~~
+ CategoryInfo : SecurityError: (:) [],PSSecurityException
+ FullyQualifiedErrorId : UnauthorizedAccess
而 npx hexo
可以正确执行
解决方案
PowerShell 的默认脚本执行策略是 Restricted,它禁止运行脚本。可以通过更改 PowerShell 的执行策略来解决这个问题。
解决方法 1:修改执行策略(亲测可行)
你可以使用以下命令将 PowerShell 的执行策略设置为 RemoteSigned,这样你就可以运行本地脚本,但是从网络下载的脚本需要签名才能运行。注意,需要以管理员权限运行 PowerShell 执行下面的命令:
Set-ExecutionPolicy RemoteSigned
运行上述命令后,你应该能够运行 Hexo 命令了。请注意,这样设置执行策略可能会降低系统的安全性。请确保你信任你运行的脚本。
解决方法 2:在命令中使用 Bypass 参数
你也可以在运行 Hexo 命令时,使用 -ExecutionPolicy Bypass
参数来绕过脚本执行策略,例如:
powershell -ExecutionPolicy Bypass -Command "hexo"
这个命令将在绕过脚本执行策略的情况下运行 Hexo 命令。
解决方法 3:使用 npx
你已经提到了使用 npx hexo
命令可以正常执行。npx 是一个 Node.js 工具,它可以帮助你运行本地安装的 Node.js 包,而不需要设置 PowerShell 的执行策略。如果 npx hexo
对你来说可行,你可以继续使用这个命令来运行 Hexo。
以上方法中的任何一种都可以解决你的问题,选择其中一个适合你的情况。
本文作者:Zijian/TENG(微信公众号:好记性如烂笔头),转载请注明原文链接:https://www.cnblogs.com/tengzijian/p/17783698.html