VSCode中Node.js脚本执行被拒绝的根本原因是PowerShell执行策略限制,需运行set-ExecutionPolicy RemoteSigned -Scope CurrentUser并重启终端解决;该策略仅允许本地脚本执行,对网络下载脚本要求签名,兼顾安全与开发效率。

VSCode 中 Node.js 脚本执行被拒绝,90% 不是权限不足,而是 PowerShell 执行策略(Execution Policy)在拦截——改策略比改文件权限、重装 Node 或切终端类型更直接有效。
为什么 node index.js 或 npm start 报 “Execution Policy” 错误?
错误信息通常类似:cannot be loaded because running scripts is disabled on this system。这不是 Node.js 没装好,也不是项目路径错,而是 PowerShell 默认用 Restricted 策略,连 npm 自带的 shell 封装脚本(比如 npm.cmd 调用的内部逻辑)都会被拦住。
-
get-ExecutionPolicy返回Restricted就坐实了问题 - 别用管理员身份启动 VSCode“硬闯”,这会污染用户上下文,后续调试、Git 操作都可能出权限异常
- 改的是当前用户策略,不是机器级策略;
-Scope CurrentUser是安全边界
如何安全启用当前用户的脚本执行权限?
只需一条命令,且只影响你自己的账户,不波及其他用户或系统策略:
使用 JSON Schema 验证 JSON 数据,从示例 JSON 生成 schema,并将其转换为 TypeScript 接口、Python 数据类或 Markdown 文档。
- 在 VSCode 内置终端(PowerShell)中运行:
set-ExecutionPolicy RemoteSigned -Scope CurrentUser - 确认生效:
get-ExecutionPolicy -Scope CurrentUser应输出RemoteSigned - 必须关闭并重新打开 VSCode 终端标签页(不是 reload window),否则 PATH 和策略缓存不会刷新
-
RemoteSigned允许本地脚本执行,仅对从网络下载的脚本要求签名,开发场景下平衡了安全与可用性
哪些情况不能靠改策略解决?
执行策略只管 PowerShell 脚本链,不覆盖其他权限层。以下问题改策略无效,得另查:
-
Permission denied出现在 WSL 中且脚本路径含/mnt/c/:这是 NTFS 不保留执行位导致的,chmod +x无效,应把项目移到~/projects/原生路径下 -
command 'node' not found:说明终端根本没加载到 Node 路径,检查$env:PATH(PowerShell)是否含 Node 安装目录,必要时用terminal.integrated.env.windows注入 -
Cannot launch program在launch.json调试时出现:多半是program字段指向了 shell 脚本(如start.sh),而 VSCode 调试器只认 JS/TS 入口文件,应改为"program": "${workspaceFolder}/src/server.js"
真正要留心的,是策略修改后仍报错的场景——那大概率已脱离 PowerShell 策略范畴,得回头检查路径继承、WSL 文件系统行为或 launch.json 的 runtimeExecutable 显式声明。

















