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

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

相关推荐
涡能增压发动积21 小时前
同样的代码循环 10次正常 循环 100次就抛异常?自定义 Comparator 的 bug 让我丢尽颜面
后端
Wenweno0o21 小时前
0基础Go语言Eino框架智能体实战-chatModel
开发语言·后端·golang
swg32132121 小时前
Spring Boot 3.X Oauth2 认证服务与资源服务
java·spring boot·后端
tyung21 小时前
一个 main.go 搞定协作白板:你画一笔,全世界都看见
后端·go
gelald21 小时前
SpringBoot - 自动配置原理
java·spring boot·后端
殷紫川1 天前
深入拆解 Java 内存模型:从原子性、可见性到有序性,彻底搞懂 happen-before 规则
java·后端
元宝骑士1 天前
FIND_IN_SET使用指南:场景、优缺点与MySQL优化策略
后端·mysql
用户31952370347711 天前
记一次 PostgreSQL WAL 日志撑爆磁盘的排查
后端
nghxni1 天前
LightESB PlatformHttp v3.0.0:JSONPath 订单转换 HTTP 路由实战
后端
武子康1 天前
大数据-263 实时数仓-Canal 增量订阅与消费原理:MySQL Binlog 数据同步实践
大数据·hadoop·后端