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

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

相关推荐
Victor3561 小时前
Netty(20)如何实现基于Netty的WebSocket服务器?
后端
缘不易1 小时前
Springboot 整合JustAuth实现gitee授权登录
spring boot·后端·gitee
Kiri霧1 小时前
Range循环和切片
前端·后端·学习·golang
WizLC2 小时前
【Java】各种IO流知识详解
java·开发语言·后端·spring·intellij idea
Victor3562 小时前
Netty(19)Netty的性能优化手段有哪些?
后端
爬山算法2 小时前
Netty(15)Netty的线程模型是什么?它有哪些线程池类型?
java·后端
白宇横流学长2 小时前
基于SpringBoot实现的冬奥会科普平台设计与实现【源码+文档】
java·spring boot·后端
Python编程学习圈3 小时前
Asciinema - 终端日志记录神器,开发者的福音
后端
bing.shao3 小时前
Golang 高并发秒杀系统踩坑
开发语言·后端·golang
壹方秘境3 小时前
一款方便Java开发者在IDEA中抓包分析调试接口的插件
后端