查看: 177|回复: 0

Node -V报错与PowerShell执行策略拦截npm修复

[复制链接]
发表于 1 小时前 | 显示全部楼层 |阅读模式
Windows 手动部署 Node.js 时,版本查询命令和 PowerShell 执行策略是两个容易混淆的故障点。前者会让人误以为 Node 没装好,后者会造成 CMD 中 npm 正常、PowerShell 中 npm 直接报错。下面按现象复现、根因分析和修复验证展开。

一、问题现象
Node.js 已解压安装到 D 盘。执行 node -V 出现 bad option: -V;执行 npm -V 没有输出版本号,而是输出大段 npm 帮助手册,底部可见 npm@11.17.0。另一个现象是 CMD 窗口执行 npm 完全正常,PowerShell 执行 npm 却提示无法加载 npm.ps1,因为系统禁止运行脚本。

二、版本命令复现与正确写法
  1. PS C:\Users\Administrator> node -V
  2. D:\工具软件\node\node.exe: bad option: -V
  3. C:\Users\Administrator>npm -V
  4. # 输出一大段 npm 帮助手册,底部可以看到 npm@11.17.0
复制代码
正确命令为:
  1. node --version
  2. npm -v
复制代码
也就是说,查看 Node 版本要用双横杠 --version,不支持 -V;查看 npm 版本要用单横杠小写 v,不要写成大写 V。命令写错并不代表 Node 本体损坏,可以用完整路径验证:
  1. D:\工具软件\node\node.exe --version
复制代码

三、PowerShell 拦截 npm.ps1 的报错
完整报错信息如下:
  1. npm : 无法加载文件 D:\工具软件\node\npm.ps1,因为在此系统上禁止运行脚本。有关详细信息,请参阅 https:/go.microsoft.com/fwlink/?LinkID=135170 中的 about_Execution_Policies。
  2. 所在位置 行:1 字符: 1
  3. + npm run dev
  4. + ~~~
  5. + CategoryInfo : SecurityError: (:) [],PSSecurityException
  6. + FullyQualifiedErrorId : UnauthorizedAccess
复制代码

四、根因分析
Node 安装目录中存在 npm.ps1,这是供 PowerShell 调用的脚本代理文件。Windows PowerShell 默认执行策略为 Restricted,会禁止运行本地 ps1 脚本;CMD 终端不受 PowerShell 执行策略管控,所以 CMD 里 npm 正常。该问题不是环境变量配置错误,也不是 Node 安装损坏,而是 PowerShell 安全策略拦截了 npm.ps1。

五、解决方案
方案1:永久修复,开发机器推荐,只修改当前用户。以管理员身份打开 PowerShell,执行:
  1. Set-ExecutionPolicy -Scope CurrentUser RemoteSigned
复制代码
出现确认提示时输入 Y 并回车。RemoteSigned 表示本地脚本允许运行,网络下载脚本需要数字签名,兼顾安全与开发;不建议直接使用 Bypass 放开全部限制。执行后关闭全部 PowerShell 窗口,重新打开普通 PowerShell 终端再测试。查看当前执行策略可用:
  1. Get-ExecutionPolicy
复制代码
方案2:临时方案。普通 PowerShell 窗口执行:
  1. Set-ExecutionPolicy -Scope Process Bypass
复制代码
该设置仅当前会话生效,新开窗口后失效。
方案3:妥协方案。直接使用 CMD 终端进行开发,不改动 PowerShell 策略。
需要恢复系统默认策略时,以管理员 PowerShell 执行:
  1. Set-ExecutionPolicy -Scope CurrentUser Restricted
复制代码

六、修复后的验证
  1. node --version
  2. npm -v
  3. npm run dev
复制代码
两个版本命令能正常输出版本号,npm run dev 能正常启动,说明环境已就绪。

七、踩坑要点
1. 查看 Node 版本用 node --version,不要写 node -V;查看 npm 版本用 npm -v,小写 v。
2. CMD 正常、PowerShell 报 npm.ps1 无法加载,是 PowerShell 执行策略限制,与 Node 安装和 PATH 环境变量无关。
3. 修改策略优先使用 -Scope CurrentUser,只作用于当前登录用户,不影响系统其他账户。
4. 新 Windows 开发机可优先处理 PowerShell 执行策略,避免 VS Code 内置终端后续踩同样的坑。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

指导单位

江苏省公安厅

江苏省通信管理局

浙江省台州刑侦支队

DEFCON GROUP 86025

Hacking Group 021A

旗下站点

态势感知中心

应急响应中心

红盟安全

联系我们

官方QQ群:112851260

官方邮箱:security#ihonker.org(#改成@)

官方核心成员

关注微信公众号

Archiver|手机版|小黑屋| ( 沪ICP备2021026908号 )

GMT+8, 2026-10-26 14:48 , Processed in 0.023583 second(s), 28 queries , Gzip On.

Powered by ihonker.com

Copyright © 2015-现在.

  • 返回顶部