uni-app 并非“只能”用 npm,但在官方脚手架(vue-cli 插件)和 HBuilderX 的默认工作流里,node_modules 的目录结构被硬编码成了 npm/yarn 的扁平模式。
pnpm 默认采用“全局 store + 符号链接”的嵌套结构,这会让 uni-app 的编译插件、webpack 配置以及 HBuilderX 的依赖扫描逻辑找不到包,于是出现:

  • 运行时报 Cannot find module xxx
  • 编译小程序时卡死或白屏
  • HBuilderX 的语法提示、类型声明丢失

只要把 pnpm 的目录结构“降级”成扁平模式,就可以正常安装和运行。做法很简单:

  1. 项目根目录新建 .npmrc
  2. 写入
    shamefully-hoist=true
    auto-install-peers=true
    strict-peer-dependencies=false
    
  3. 删除原 node_modules 与 pnpm-lock.yaml,重新 pnpm i

实测 CLI 项目与 HBuilderX 均可正常 dev/build。
因此,uni-app 并不是“不支持 pnpm”,而是需要额外配置;官方文档暂未强调这一点,所以社区普遍误以为只能用 npm。

Logo

鲲鹏昇腾开发者社区是面向全社会开放的“联接全球计算开发者,聚合华为+生态”的社区,内容涵盖鲲鹏、昇腾资源,帮助开发者快速获取所需的知识、经验、软件、工具、算力,支撑开发者易学、好用、成功,成为核心开发者。

更多推荐