在使用 VSCode 进行代码开发时,相信不少开发者都遇到过无法跳转的问题,尤其是当遇到 ERR_OSSL_EVP_BAD_DECRYPT 错误时,更是让人摸不着头脑。本文将深入剖析该错误背后的原因,并提供切实可行的解决方案,帮助大家快速恢复 VSCode 的跳转功能。
问题场景重现:配置变更引发的加密密钥失效
该问题通常出现在以下场景:
- 系统升级或迁移:操作系统升级、更换电脑或者迁移开发环境后,VSCode 无法正常加载之前的加密密钥。
- VSCode 更新:VSCode 版本更新后,可能导致加密机制发生变化,从而导致密钥失效。
- 用户配置修改:修改了 VSCode 的配置文件,尤其是涉及到加密相关的配置项。
当我们尝试跳转到定义或引用时,VSCode 会提示类似以下的错误信息:
ERR_OSSL_EVP_BAD_DECRYPT: error:0308010C:digital envelope routines:inner_evp_generic_fetch:unsupported
这个错误信息表明,VSCode 在尝试解密某些数据时,使用了错误的密钥或者加密算法,导致解密失败。这通常与 VSCode 的 credential manager 有关。
底层原理深度剖析:OpenSSL 与 Credential Manager 的交互
ERR_OSSL_EVP_BAD_DECRYPT 错误直接指向了 OpenSSL 库,它是 VSCode 用来进行加密和解密的底层库。Credential Manager 则负责安全地存储和管理 VSCode 需要用到的凭据信息,例如 Git 仓库的用户名和密码等。
当 VSCode 需要访问或存储敏感信息时,它会调用 OpenSSL 库进行加密,并将加密后的数据存储在 Credential Manager 中。如果 Credential Manager 中存储的加密数据与当前 VSCode 使用的 OpenSSL 库不兼容,或者密钥已经失效,就会出现 ERR_OSSL_EVP_BAD_DECRYPT 错误。
此外,Node.js 的版本也会影响 OpenSSL 的行为。某些 Node.js 版本与特定版本的 OpenSSL 存在兼容性问题,这也可能导致该错误的发生。例如,使用宝塔面板部署 Node.js 应用时,需要特别注意 Node.js 的版本选择。
解决方案:删除加密密钥并重新配置
解决 VSCode 不能跳转,并出现 ERR_OSSL_EVP_BAD_DECRYPT 错误,最直接有效的方法就是删除 Credential Manager 中存储的加密密钥,并让 VSCode 重新生成新的密钥。
步骤 1:删除 Credential Manager 中的密钥
Windows 系统:

- 打开“控制面板”。
- 搜索并打开“凭据管理器”。
- 在“Windows 凭据”中,找到所有与 VSCode 相关的凭据(通常以
VSCode开头)。 - 展开每个凭据,并点击“删除”。
macOS 系统:
- 打开“钥匙串访问”。
- 在“钥匙串”列表中,选择“login”或“System”。
- 搜索与 VSCode 相关的条目(例如
VSCode或Electron Safe Storage)。 - 删除这些条目。
步骤 2:重启 VSCode
删除 Credential Manager 中的密钥后,重启 VSCode。VSCode 会自动检测到密钥丢失,并提示你重新输入相关凭据信息。例如,如果你使用了 Git,VSCode 会提示你重新输入 Git 仓库的用户名和密码。
步骤 3:检查 Node.js 版本(可选)
如果问题仍然存在,可以尝试升级或降级 Node.js 版本。建议选择 LTS (Long Term Support) 版本,以确保稳定性和兼容性。
nvm install 16 # 安装 Node.js 16 LTS 版本 (需要先安装 nvm)
nvm use 16 # 使用 Node.js 16 LTS 版本
node -v # 验证 Node.js 版本
步骤 4:更新 VSCode 和相关插件
确保 VSCode 和所有已安装的插件都是最新版本,以避免由于旧版本存在的 Bug 导致的错误。
实战避坑经验总结
- 备份重要配置: 在进行任何配置修改之前,务必备份 VSCode 的
settings.json文件,以便在出现问题时可以快速恢复。 - 谨慎更新 VSCode: VSCode 更新可能会引入新的问题,建议在更新之前查看更新日志,了解可能的影响。
- 监控 Node.js 版本: 不同项目可能依赖不同版本的 Node.js,使用
nvm等工具可以方便地管理和切换 Node.js 版本,避免版本冲突。 - 检查环境变量: 某些插件可能依赖特定的环境变量,确保这些环境变量已经正确配置。
通过以上步骤,大多数 ERR_OSSL_EVP_BAD_DECRYPT 错误都可以得到解决,从而恢复 VSCode 的跳转功能,提升开发效率。 在解决 vscode 不能跳转 问题时,务必耐心排查,逐一尝试上述方法。
冠军资讯
半杯凉茶