You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Windows CMD使用fnm报管道关闭错误,寻求配置解决方案

Windows CMD下fnm配置失败(管道关闭错误)的解决方案

问题重现

通过winget安装fnm并完成Node.js 22版本安装后:

winget install Schniz.fnm
fnm install 22

执行fnm use 22时提示缺少环境变量配置,尝试官方推荐的fnm env --shell cmd | call命令,触发以下panic错误:

thread 'main' panicked at library\std\src\io\stdio.rs:1118:9:
failed printing to stdout: The pipe is being closed. (os error 232)

注:fnm已确认Node.js v22.14.0为默认版本,PowerShell下可正常使用,重启终端无效,系统为Windows 10/11。

错误原因

该问题源于CMD的管道机制与fnm的输出逻辑不兼容:当fnm env --shell cmd通过管道输出脚本内容时,CMD的call命令会提前关闭管道,导致fnm的Rust程序在写入stdout时触发管道关闭错误。

解决办法

1. 临时生效(当前CMD会话)

绕开管道,将fnm生成的环境脚本保存到临时文件后执行:

# 生成CMD环境脚本到临时文件
fnm env --shell cmd > fnm_env_temp.cmd
# 加载环境变量
call fnm_env_temp.cmd
# 清理临时文件
del fnm_env_temp.cmd

执行完成后,即可正常使用fnm use 22或直接运行node命令。

2. 永久生效(自动加载环境)

配置CMD启动时自动加载fnm环境:

  • 打开CMD,执行echo %USERPROFILE%获取用户目录(例如C:\Users\你的用户名)
  • 在该目录下创建autorun.cmd文件,写入以下内容:
@echo off
fnm env --shell cmd > "%TEMP%\fnm_env_temp.cmd"
call "%TEMP%\fnm_env_temp.cmd"
del "%TEMP%\fnm_env_temp.cmd"
  • 打开注册表编辑器(Win+R输入regedit),定位到HKEY_CURRENT_USER\Software\Microsoft\Command Processor
  • 右键新建字符串值,命名为AutoRun,值设置为"你的用户目录\autorun.cmd"(例如"C:\Users\John\autorun.cmd")
  • 重启CMD,环境变量会自动加载,fnm命令可正常使用。

验证

配置完成后,执行node -v应显示v22.14.0,fnm use 22不再报错。

内容的提问来源于stack exchange,提问作者Foad S. Farimani

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 11:42:04