GeXiangDong

精通Java、SQL、Spring的拼写,擅长Linux、Windows的开关机

0%

VS Code: Unable to resolve your shell environment: Unexpected exit code from spawned shell

起因

nodejs的某个版本,需要在.zshrc里增加一行

1
export NODE_OPTIONS=--openssl-legacy-provider

否则启动 vue2 的 dev server 的 npm 命令会出错。

opensslErrorStack: [ 'error:03000086:digital envelope routines::initialization error' ],
library: 'digital envelope routines',
reason: 'unsupported',
code: 'ERR_OSSL_EVP_UNSUPPORTED'

VUE3 Vite 似乎不存在这个问题。

但是这句不能被 Visual Studio Code 很好的识别,每次启动Visual Studio Code 都会报错。

Unable to resolve your shell environment: Unexpected exit code from spawned shell (code 9, signal null) 

这个错误对话框只能点击差号关掉,默认按钮是 restart, 稍有不慎误点start就重启又来一次。

解决办法

VS Code 启动时会增加一些 VSCODE_ 的环境变量,例如:

VSCODE_CODE_CACHE_PATH
VSCODE_CWD
VSCODE_IPC_HOOK
VSCODE_NLS_CONFIG
VSCODE_PID

因此通过在 .zshrc 中判断是否有这些变量,有则不设置 NODE 用的变量,无则设置来避免 VSCode 解析出错。

1
2
3
if ! printenv | grep VSCODE_; then
export NODE_OPTIONS=--openssl-legacy-provider
fi