公司的一个项目总是在线上打包成功,本地打包失败,对此一步一步排查,发现线上服务器 NodeJS 版本为 14,而本地版本为 16。
由于我机器上只有 16,并且几乎所有的配置如 pnpm,yarn 等都放在 NodeJS 目录下,所以想通过 NodeJS 的版本控制工具来实现版本切换。
在经过一番搜索后,发现 nvm 是比较适合我的,我个人偏向于 “有问题能找到答案,不需要踩坑” 的工具,nvm 的历史、社区已经满足了。
刚开始装上了 nvm,但是当他查找到我本地已有 NodeJS 程序时,询问是否需要管理本地的程序时我选择了是,然后非常难受的发现我的结构目录都被复制到 nvm 的目录了。在此呢给大家建议一开始不要让 nvm 管理已有的 Node。
经过一番观察,发现 nvm 是通过链接来实现不同版本控制的,原有数据还有保留,通过重新配置目录与环境变量PATH恢复了,后来在使用过程中发现了 Volta,看起来很不错就选择放弃了 nvm,Volta 目前不支持 pnpm 。
完成了初步安装后,我发现 yarn global 无法使用,打印信息
C:\Users\MrWei>yarn global add vue
Usage Error: No project found in /C:/Users/MrWei
$ yarn run [--inspect] [--inspect-brk] [-T,--top-level] [-B,--binaries-only] <scriptName> .
虽然不是项目,但是我这是全局安装啊!莫名其妙,随后开始 Google,最后找到了答案:yarn 未来只关注项目,全局则默认交给 npm 了,也就是说全局安装需要使用 npm install -g 。