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

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

相关推荐
kebeiovo1 分钟前
游戏服务端开发:Actor模型详解(Go语言)
开发语言·后端·golang
红烧大青虫18 分钟前
setInterval 倒计时实现:60s 验证码发送逻辑
后端·华为·harmonyos·鸿蒙系统
小村儿1 小时前
连载14-实战篇--一个半月,我一个人和 Claude Code 搭出一套数字人工程
前端·后端·ai编程
你驴我1 小时前
WhatsApp 多账号下消息已读回执的实时聚合与推送实践
后端·python
用户208046804561 小时前
Python3 注释编写完全指南:从基础规范到高效实践
后端
苏三说技术1 小时前
Jackson3来了,变化真大!
后端
Larcher2 小时前
LangChain RAG 排错实录:.env 为什么没有生效
vue.js·后端
半个落月2 小时前
用 LangChain 连接远程 MCP:从工具发现到多轮调用闭环
人工智能·后端·node.js
HONG````2 小时前
HarmonyOS ArkUI 弹窗全解:Toast、AlertDialog 与 CustomDialog 封装
后端
JaneConan2 小时前
鸿蒙 ArkUI 深水区:@Watch 和 @Observed,状态变了「自动跑」+ 嵌套对象「深层重绘」
开发语言·后端·ui·harmonyos