彻底解决fnm刚安装完出现You should setup your shell profile to evaluate ‘fnm env‘问题

问题场景

  • 刚安装完fnm,配置文件尚未完全配置
  • 运行了fnm current ,fnm use 版本号等命令
  • 使用普通权限下的cmd出现error: We can't find the necessary environment variables to replace the Node versiYou should setup your shell profile to evaluate 'fnm env'
  • powershell和管理员的cmd没有问题(powershell也有一段命令,需要单独为其设置)

解决方案(3种)

本质上都是运行官方文档的一段代码

@echo off
:: for /F will launch a new instance of cmd so we create a guard to prevent an infnite loop
if not defined FNM_AUTORUN_GUARD (
    set "FNM_AUTORUN_GUARD=AutorunGuard"
    FOR /f "tokens=*" %%z IN ('fnm env --use-on-cd') DO CALL %%z
)

猜测原理为:fnm use 版本号 命令需要在上下文中获取版本号信息,执行这段代码会手动把信息放入到cmd的上下文中

因此,各种方式都是运行该段代码(之后这段代码会放在start.cmd文件里)。

第一种:手动运行CMD文件

使用 win + r 命令输入 cmd,默认地址是在 %USERPROFILE% 路径下,可以把start.cmd文件放在这里,每次打开cmd窗口手动输入 start.cmd 运行

没有优点

第二种:通过快捷方式运行CMD文件

对cmd.exe程序新建一个快捷方式,然后在cmd的快捷方式上右键==》属性==》在目标里加上

/k %USERPROFILE%\start.cmd ==》点击“确定”

/k 参数告诉命令提示符窗口在运行完批处理文件后保持打开状态)

优点:侵入少 缺点:每次需要打开这个快捷方式才可以访问

第三种:通过注册表设置

注意!在操作注册表前请先进行备份!

打开注册表,进入到 "HKEY_CURRENT_USER\Software\Microsoft\Command Processor" 路径下

如果没有对应文件夹,需要手动进行创建

Command Processor 文件夹上右键 ==》新建==》字符串值 数值名称为 AutoRun ,数值数据为

start.cmd文件的地址,保存注册表之后重启电脑即能自由访问。

优点:每个cmd都能使用 缺点:侵入多

(该方法来自于通义千问和互联网)

总结

总体来说,推荐第三种方式,一劳永逸,也更适合前端在各个地方打开cmd,之后有问题也会以第三种方式补充到这篇文档上

题外话:在下载完node之后, %USERPROFILE%文件夹下还有一个 .npmrc的文件 这个文件是npm的配置文件,保存着node的两个关键的文件夹,如果把node的下载位置设置到其他盘的话,这个文件里面的默认下载地址可以改为 default/...  这样实现一个配置文件管理多个node中的npm的默认下载地址(default是快捷方式,作者通过这种文件链接的方式实现fnm的切换)   这个都是推测,可以尝试一下

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值