Microsoft Visual C++ Runtime Library - Assertion failed

遇到的这个报错:


Microsoft Visual C++ Runtime Library - Assertion failed!

less 复制代码
File: ...\node_modules\node-pty\src\win\conpty.cc
Line: 106
Expression: remove_pty_baton(baton->id)

这是一个 Node.js 库 node-pty底层断言错误(assertion failed) ,它通常出现在使用终端模拟器的应用中,比如:

  • VS Code 终端内部
  • 一些 Electron 应用
  • 使用 node-pty 的 CLI 工具(如 xterm.js, terminal-kit

🎯 原因分析

这类错误主要有以下可能:

1. node-pty 模块编译不一致 / 损坏

  • 通常是因为你在 Node.js 升级后,没有重新编译原生模块;
  • 或者 node_modules 中的 .node 文件不兼容当前系统/Node.js 版本;
  • 比如你安装过 Windows 上的 node-pty 但升级了 Node.js 后没重新构建。

2. 多线程/多终端操作过程中,pty 被非法释放

  • 你终止了一个终端,而某个 baton 对象还引用它;
  • 这会触发 remove_pty_baton() 的 assert。

3. 版本不兼容

  • node-pty 某些版本和 Node.js 最新版本、Windows conpty 子系统不兼容;
  • 特别是用 VS Code 插件、Electron 应用时更容易遇到。

✅ 解决方案

🔁 方法 1:删除并重新安装依赖 + 重建 node-pty

进入你的项目根目录,运行以下命令:

bash 复制代码
# 1. 删除 node_modules 和 lock 文件
rm -rf node_modules package-lock.json

# 2. 清除缓存(可选)
npm cache clean --force

# 3. 重新安装依赖
npm install

# 4. 如果你使用的是 electron / node-gyp,需要重新编译 native 模块:
npm rebuild node-pty

🧱 方法 2:确认 Node.js 与 node-pty 的版本兼容性

查看你的 Node.js 版本:

复制代码
node -v

然后在 node-pty 的 GitHub 上查看对应版本是否兼容。

如果你使用的是 Electron,需要额外传参:

css 复制代码
# Electron 项目需指定 headers
npm rebuild node-pty --runtime=electron --target=你的Electron版本号 --disturl=https://electronjs.org/headers

🔧 方法 3:升级或降级 node-pty

你可以尝试切换 node-pty 版本:

perl 复制代码
npm install node-pty@latest
# 或
npm install node-pty@0.10.1  # 视你项目需求

🔥 方法 4:关闭使用 node-pty 的功能(临时规避)

如果你知道是哪个程序使用 node-pty(如 VS Code 插件或自定义 CLI),可尝试临时禁用终端功能或换用别的插件。


🚨 方法 5:启用 JIT 调试器(仅开发者)

如果你有 Visual Studio 安装并且想调试,可以点击错误提示里的 "Retry" ,进入调试状态。但这通常只适用于你在开发使用 node-pty 的 Electron 应用时。


✅ 总结

操作 目的
npm rebuild node-pty 重新构建 native 模块
删除 node_modules 重装 避免模块残留错误
匹配 Node.js 与 node-pty 版本 避免底层冲突
升级/降级 node-pty 用已知稳定版本
临时关闭使用 node-pty 的功能 应急处理

你可以告诉我:

  • 你运行这个程序的上下文(是 VS Code 终端?Electron 应用?某个脚本?)
  • 当前 Node.js 和 node-pty 的版本(我可以建议具体可用版本)

我可以进一步帮你分析并给出精确的修复建议。

相关推荐
coding随想7 分钟前
网络层的“四骑士”:深入浅出IP、ICMP、ARP、RARP协议
后端·网络协议
sino爱学习8 分钟前
基于Redis 发布订阅实现一个轻量级本地缓存刷新
后端
bug菌21 分钟前
还在为编程效率发愁?字节跳动Trae如何让你秒变“代码大师“!
后端·ai编程·trae
Moonbit25 分钟前
MoonBit Perals Vol.04: 用MoonBit 探索协同式编程
后端·程序员·编程语言
2501_9096867026 分钟前
基于SpringBoot的旅游网站系统
vue.js·spring boot·后端
HZ_YZ27 分钟前
服务器docker部署项目
后端
用户849210736938041 分钟前
Skywalking 部署
后端
bug菌41 分钟前
🤔领导突然考我Spring中的注解@Bean,它是做什么用的?我...
java·后端·spring
aiopencode1 小时前
移动端网页调试实战,触摸事件穿透与点击冲突问题的定位与优化
后端
菜鸟Debug1 小时前
🚀 Redisson 分布式锁源码解析:从加锁到解锁的完整流程
后端