ai最擅长的就是瞎分析, 能带着你狂奔

症状

  • 升级了pnpm10.12.1之后, vscode插件项目无法正常运行, install, compile, run, 等等统统不正常

ai的猜测

  1. pnpm版本问题, 实话说他的版本确实有问题.
  2. 之前移动过一个几百兆的项目, 可能动了pnpm的库, 因为pnpm用的是链接.
  3. 建议换npm/yarn, 试了一下, 这两个确实都还正常.
  4. 降了pnpm版本到10.11.1, 问题依旧. 当然可能是降的版本不够多.
  5. 但是, 实际原因是, 父目录有pnpm的各种设置和库, pnpm没有识别子目录为项目目录. 解决就很简单了.
    1. 全局安装各种yo相关
    2. 删掉父目录的库, 改掉习惯使用本地库的’臭’毛病
  6. 结论:
    1. ai有病. 他一般基于瞎猜而不是逐步排查.
    2. pnpm也有病. 父目录有个库, 子目录就不能是独立项目了, 他觉得自己是git呢.

事件中使用的各种手段还是有用的, 这里做个罗列, 其中某些完全不靠谱的操作就没放进来.

  • 0608操作

# 查看当前版本
pnpm --version
# 本地安装
npm ls -g pnpm
# 查看brew安装历史
brew list --versions pnpm

which pnpm
ls -la $(which pnpm)
# 查看自更新历史
history | grep "pnpm self-update"

# 卸载当前版本
npm uninstall -g pnpm
brew uninstall pnpm  # 如果用 brew 安装过

# 查看可用版本
npm view pnpm versions | tail -20
npm view pnpm dist-tags
npm view pnpm versions | grep "10\." | tail -10
npm view pnpm time



# 安装特定版本(比如 8.x)
npm install -g pnpm@8

# 只能这么操作
rm -rf /Users/bergman/Library/pnpm
echo $PATH | grep pnpm
# 如果上面有内容那么就要去.zshrc找
code ~/.zshrc
# 删完了验证
which pnpm
pnpm --version  # 应该提示 command not found

# 安装用brew更安全
brew install pnpm

# 然后可以pnpm
pnpm add -g yo generator-code @vscode/vsce typescript ts-node nodemon


这两个都是空
 ls -la | grep yarn
 cat event/package.json | grep packageManager
咱们定位下问题, 不要着急掩盖问题. 我把act开给你, 你帮我定位问题, 注意不是让你install, 你不要install来掩盖问题, 你帮我搞明白为啥pnpm说yarn是包管理工具.
  • 0609操作, 要解决pnpm把项目识别为yarn项目, 然后拒绝install问题, 好神奇, 这个目录包括父目录从未yarn过.
# 当初安装yarn
corepack enable
# 昨天 
npm install -g generator-code  # 做过了. 然后yarn没有问题, 但是, pnpm安装之后. yo code
# zsh: command not found: yo



# yarn全局目录
yarn global dir
yarn config get global-folder

yarn cache dir
yarn config get cache-folder

- 检查是否有 `.yarnrc``.yarnrc.yml` 文件指向了您的 vsce 目录
- 查看全局 yarn 配置:`yarn config list`
echo $YARN_CACHE_FOLDER
echo $YARN_GLOBAL_FOLDER

yarn global list

corepack --version
which yarn  # 看是否是 corepack 管理的

pnpm store path
npm config get cache

npm list -g --depth=0
pnpm list -g --depth=0


ls -la /opt/homebrew/bin/yarn
lrwxr-xr-x  1 bergman  admin  61  6  9 00:43 /opt/homebrew/bin/yarn -> ../Cellar/node/23.11.0/lib/node_modules/corepack/dist/yarn.js
➜  ~ 

corepack导致的, 他检测到有包管理器混乱的状态, 就纠正为yarn管理,
注意, 这是claude说的, 真不见得对.
但是, 累了, 就这样吧

  • 0609第二部分操作: 解决了yarn配置, pnpm依旧拒绝操作:

pnpm store prune

pnpm install --verbose --no-frozen-lockfile

Done in 341ms using pnpm v10.11.1

pwd
ls -la

pnpm list
pnpm why typescript  # 测试某个依赖

pnpm install --ignore-workspace --verbose

问题就是父目录有pnpm的内容, 所以pnpm识别父目录才是项目目录, 因此, 删除父目录的相应配置内容, 万事大吉了.

  • 0609第三部分操作, 尝试全局approve esbuild, 然而木得操作
# 查看当前项目的批准状态
pnpm config list

# 查看全局批准状态  
pnpm config list --global

# 检查 .npmrc 文件
cat ~/.npmrc
cat ./.npmrc

pnpm approve-builds --global
There are no packages awaiting approval
➜  esb git:(main) ✗ pnpm approve-builds         
? Choose which packages to build (Press <space> to select, <a> to toggle all, <i> to invert selection) … 
❯ ○ esbuild

结论: 很悲伤, esbuild不能全局批准, 必须每个项目批准