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 的版本(我可以建议具体可用版本)

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

相关推荐
Access开发易登软件2 小时前
Access开发导出PDF的N种姿势,你get了吗?
后端·低代码·pdf·excel·vba·access·access开发
中国胖子风清扬3 小时前
Rust 序列化技术全解析:从基础到实战
开发语言·c++·spring boot·vscode·后端·中间件·rust
bobz9653 小时前
分析 docker.service 和 docker.socket 这两个服务各自的作用
后端
野犬寒鸦3 小时前
力扣hot100:旋转图像(48)(详细图解以及核心思路剖析)
java·数据结构·后端·算法·leetcode
phiilo4 小时前
golang 设置进程退出时kill所有子进程
后端
花花无缺4 小时前
python自动化-pytest-用例发现规则和要求
后端·python
程序员小假4 小时前
我们来说一说 Cglib 与 JDK 动态代理
后端
摆烂工程师5 小时前
教你如何认证 Gemini 教育优惠的二次验证,薅个 1年的 Gemini Pro 会员
后端·程序员·gemini
绝无仅有6 小时前
未来教育行业的 Go 服务开发解决方案与实践
后端·面试·github
程序员爱钓鱼6 小时前
Go语言实战案例- 命令行参数解析器
后端·google·go