发了一个npm包,发包的时候要求切换镜像,谁知道切换后pnpm就无法使用了,再切换回淘宝镜像也无济于事,pnpm install my-package
的时候报错:
This modules directory was created using the following registries configuration: {"default":"http://registry.npm.taobao.org/"}.
The current configuration is {"default":"https://registry.npm.taobao.org/"}. To recreate the modules directory using the new
settings, run "pnpm install".
查遍全网(比如github),都说执行这两条命令即可:
pnpm install -g
pnpm install -g pnpm
但是我的电脑就是不行,执行第一条命令就报错:
No package.json found in xxx
试了网上说的什么禁用IPV6,卵用没得,又看到有人说重装pnpm成功了,ok,来重装试试。
重装pnpm
重装参考文章:https://www.cnblogs.com/jiduoduo/p/17541501.html
1.查看pnpm版本
pnpm -v
2.先把以前的卸载了,在桌面打开命令行工具(git终端),输入which pnpm
(之前在vscode下输入命令,报错),找到pnpm的安装位置。
进入目录,这个 f 说的就是我的F盘,我又去F盘下找,果然被我找到了,记住这个路径,这才是你项目所用的路径。
/f/nvm/npm
3.然后在当前目录打开命令行工具,输入npm remove pnpm
,这个时候在输入pnpm -v
就会报错,说明已经删除成功了
4.然后重新安装,执行命令npm install pnpm -g
,他奶奶的又报错,说咱们的淘宝镜像过期了。
一查,新鲜的文章2024-01-29才发布的,竟然还有这回事:https://blog.csdn.net/ganyingxie123456/article/details/135850728
说淘宝镜像早就从 registry.npm.taobao.org
切换到了 registry.npmmirror.com
,只是直到现在HTTPS 证书到期才真正不能用了。
5.那就切换新的淘宝镜像
npm config set registry https://registry.npmmirror.com
6.切换新的镜像后再执行npm install pnpm -g
安装pnpm,没报错了,看样子是成功了。
7.然后输入pnpm -v
查看版本,又又又又报错了。说是没找到模块,有人说是没配置pnpm环境变量,于是我决定去配置一下。
然后查了一圈解决办法,基本上没有一个比较全的解答,搞得我一头雾水,查了一个问题还要去搜第二个问题,那我们就自己记录一个完整一点的方法。
配置pnpm环境变量
参考文章(ps: 先别急着点开操作):https://juejin.cn/post/7158295493812944904
我在桌面新开了一个命令行工具执行npm install pnpm -g
后,按照上面这篇参考文章操作一番后对我并不起作用。
而且我还发现,在桌面新开一个命令行和之前的命令行路径不一致,在两个路径下都能找到pnpm
左边的路径是:F:\nvm\npm
右边的路径是:F:\node\node_global
其实上面的路径就是他们各自的环境变量,而两个我早就都配置过了,那就只能猜测npm install pnpm -g
出现了问题,安装的位置不是我想要的位置。
配置环境变量的地方:WIN
+S
快捷键 -> 编辑系统环境变量 -> 环境变量 -> 双击系统变量的path
,就出来下图:
根据之前的报错信息Error: Cannot find module 'F:\nvm\npm\node_modules\pnpm\bin\pnpm.cjs'
,我猜测没有安装到/nvm/npm
这个目录下。那我就在这个路径的命令行工具下执行npm install pnpm
,去掉-g,代表就只安装在该目录下。然后就成功了。
总结
直接在你删除的那个目录进行 删除、安装 就可以了,不用全局安装。
ps:nvm安装的nodejs包路径配置与系统读取的路径可能不一致就会导致这个问题