You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用pnpm全新安装Embroider应用时出现依赖缺失错误

依赖问题排查求助与通用方法

我维护的多数应用已切换至pnpm,这是一款好用的工具,但不清楚如何排查依赖问题。本次问题源自Ember插件ember-table,已在其仓库提交issue,希望了解这类Cannot find module ...、添加缺失模块后不断出现新缺失的依赖问题的通用排查方法。

报错信息

❯ ember s
Building into /private/var/folders/k0/b1p9d5g94px8gdr10458gv0m0000gn/T/embroider/96cc9c
Build Error (broccoli-persistent-filter:Babel > [Babel: ember-table]) in ember-table/ember-table/-private/collapse-tree.js

Cannot find module '@babel/plugin-proposal-object-rest-spread'
Require stack:
- /app-root/node_modules/.pnpm/@babel+core@7.18.13/node_modules/@babel/core/lib/config/files/plugins.js
- /app-root/node_modules/.pnpm/@babel+core@7.18.13/node_modules/@babel/core/lib/config/files/index.js
- /app-root/node_modules/.pnpm/@babel+core@7.18.13/node_modules/@babel/core/lib/index.js
- /app-root/node_modules/.pnpm/broccoli-babel-transpiler@7.8.1/node_modules/broccoli-babel-transpiler/lib/worker.jsError: Cannot find module '@babel/plugin-proposal-object-rest-spread'
Require stack:
- /app-root/node_modules/.pnpm/@babel+core@7.18.13/node_modules/@babel/core/lib/config/files/plugins.js
- /app-root/node_modules/.pnpm/@babel+core@7.18.13/node_modules/@babel/core/lib/config/files/index.js
- /app-root/node_modules/.pnpm/@babel+core@7.18.13/node_modules/@babel/core/lib/index.js
- /app-root/node_modules/.pnpm/broccoli-babel-transpiler@7.8.1/node_modules/broccoli-babel-transpiler/lib/worker.js
    at Function.Module._resolveFilename (internal/modules/cjs/loader.js:902:15)
    at resolve (internal/modules/cjs/helpers.js:107:19)
    at tryRequireResolve (/app-root/node_modules/.pnpm/@babel+core@7.18.13/node_modules/@babel/core/lib/config/files/plugins.js:157:9)
    at resolveStandardizedNameForRequire (/app-root/node_modules/.pnpm/@babel+core@7.18.13/node_modules/@babel/core/lib/config/files/plugins.js:195:19)
    at sync (/app-root/node_modules/.pnpm/@babel+core@7.18.13/node_modules/@babel/core/lib/config/files/plugins.js:224:12)
    at sync (/app-root/node_modules/.pnpm/gensync@1.0.0-beta.2/node_modules/gensync/index.js:182:19)
    at /app-root/node_modules/.pnpm/gensync@1.0.0-beta.2/node_modules/gensync/index.js:210:24
    at Generator.next (<anonymous>)
    at resolvePlugin (/app-root/node_modules/.pnpm/@babel+core@7.18.13/node_modules/@babel/core/lib/config/files/plugins.js:83:17)
    at resolvePlugin.next (<anonymous>)


Stack Trace and Error Report: /var/folders/k0/b1p9d5g94px8gdr10458gv0m0000gn/T/error.dump.8c92aeb46d1be7e57b69153a731964ac.log

复现步骤

  • ember init -sn -sb -sg --no-welcome --embroider
  • pnpm install
  • 执行ember s确认无构建错误
  • ember install ember-table
  • 执行ember s出现构建错误

环境信息

❯ ember --version && pnpm --version && node --version
ember-cli: 4.6.0
node: 14.19.1
os: darwin x64
7.9.4
v14.19.1

通用依赖问题排查方法

  • 检查依赖声明与安装状态
    • 用pnpm ls <缺失包名>查看该包是否已安装,以及被哪些依赖引入,版本是否匹配
    • 查看出问题的依赖(如ember-table)的package.json,确认它是否正确声明了所需的dependencies或peerDependencies,是否存在遗漏
  • 利用pnpm的依赖分析工具
    • 执行pnpm why <缺失包名>,明确该包的依赖链路,排查是否存在版本冲突或未被正确引入的情况
    • 临时尝试pnpm install --shamefully-hoist,部分工具可能依赖顶层node_modules的包(pnpm默认采用硬链接隔离依赖,该命令会将依赖提升到顶层)
  • 清理缓存与重新安装
    • 清理pnpm缓存:pnpm store prune
    • 删除本地依赖与锁文件:rm -rf node_modules pnpm-lock.yaml,再重新执行pnpm install
  • 排查配置类问题
    • 检查项目或依赖中的Babel配置文件(如babel.config.js、.babelrc),确认缺失的插件是否被正确声明,以及@babel/core版本与插件版本是否兼容
    • 对于Ember项目,检查ember-cli-build.js中的Babel配置,是否有自定义配置覆盖了默认设置导致插件无法加载
  • 确认工具版本兼容性
    • 检查当前pnpm版本与ember-cli版本是否兼容,部分旧版ember-cli对pnpm的支持可能不完善
    • 尝试升级ember-cli到最新稳定版,或切换到与当前ember-cli兼容的pnpm版本

内容的提问来源于stack exchange,提问作者rreckonerr

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 02:10:36