根本原因是VSCode终端未继承系统PATH或PowerShell执行策略限制;需确认C:\Program Files\nodejs\和%AppData%\npm均加入PATH,并在系统PowerShell中执行Set-ExecutionPolicy RemoteSigned -Scope CurrentUser,然后完全退出并重启VSCode。

VSCode终端里npm命令报“无法识别”,根本不是npm没装
绝大多数情况,node -v 和 npm -v 在系统原生终端(如 Windows PowerShell、CMD、macOS Terminal)里能正常输出版本号,就说明 Node.js 和 npm 已正确安装。VSCode 报错只是它启动的终端进程没拿到你系统里已配置好的 PATH——不是找不到 npm,是压根没去那些路径里找。
Windows 上最常漏掉的两个 PATH 路径
Node.js 官方 .msi 安装包默认会往两个地方写路径,缺一不可:
-
C:\Program Files\nodejs\:存放node.exe和npm.cmd的主目录 -
%AppData%\npm(展开后类似C:\Users\你的用户名\AppData\Roaming\npm):存放全局安装的 CLI 工具(如npx、create-react-app),这个路径容易被忽略
检查方式:在系统 PowerShell 里运行 $env:Path -split ';',确认这两条都在输出里。如果只加了前者,npx 就会报错;只加了后者,node 命令本身都找不到。
PowerShell 执行策略拦截 npm.ps1 是独立问题,别和 PATH 混为一谈
当你看到错误信息里明确出现 npm.ps1 和 禁止运行脚本 字样,这就是 PowerShell 的 ExecutionPolicy 在作怪,跟环境变量完全无关。此时 where.exe npm 仍能返回路径,说明 PATH 没问题。
- 不要用
Set-ExecutionPolicy RemoteSigned -Scope LocalMachine(需管理员权限,影响全系统) - 推荐执行:
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser(仅当前用户,无需管理员) - 验证是否生效:
Get-ExecutionPolicy -Scope CurrentUser应返回RemoteSigned
注意:这条命令必须在**系统级 PowerShell(非 VSCode 内置终端)中以普通用户身份运行**,否则策略不会落地到 VSCode 启动的子进程。
改完环境变量或执行策略后,VSCode 必须完全退出再重开
VSCode 是 GUI 应用,启动时只读取一次环境变量快照。改完 PATH 或执行策略后:
- Windows:任务栏右键 VSCode 图标 → 「退出」,不能只关窗口
- macOS:Dock 右键图标 → 「退出」,或
killall Code - Linux:关闭所有窗口后,确保
code进程已终止
新开终端后,先运行 echo %PATH%(Windows)或 echo $PATH(macOS/Linux),对比系统终端输出。少了一条关键路径,或者 Get-ExecutionPolicy 仍是 Restricted,就说明重启不彻底。


















