Origin高效科研绘图:从零构建个性化工作流与模板配置
2026/8/9 9:13:15
一句话定义
phantom dependency(幽灵依赖)
指的是:
你的代码里import了一个包,但这个包并没有出现在你的package.json的dependencies里,却“刚好能跑”。
也叫:
package.json
{"dependencies":{"react-scripts":"^5.0.0"}}你的代码
importchalkfrom'chalk'问题是:
你没有在dependencies里声明chalk
但:
react-scripts内部依赖了chalkchalk装在了node_modules顶层所以你的代码:
居然能正常运行
这时:
chalk就是一个phantom dependency
Node.js 是:
从当前目录 → 父目录 → 一直向上找 node_modules所以:
require / import成功为了减少重复安装,包管理器会:
把**公共依赖提升(hoist)**到顶层node_modules
导致:
本地能跑 CI 挂了 别人机器挂了因为:
npmupdate react-scripts结果:
chalk被移除了 / 换版本MODULE_NOT_FOUNDpackage.json看不出真实依赖npm prune可能误删