Office 插件执行npm run dev-server报错The 'compilation' argument must be an instance of Compilation
错误根因
该报错本质是custom-functions-metadata-plugin依赖加载的webpack实例,和项目根目录安装的webpack是两份独立的安装包,即使版本号完全一致,不同实例导出的Compilation类也不会通过全等校验,因此触发类型错误。
你通过npm ls webpack看到的版本统一只是版本号一致,无法区分是否为同一份物理安装包。其他同事设备运行正常,大概率是其本地npm的依赖提升逻辑碰巧将该插件依赖的webpack复用了根目录的版本,没有单独安装副本。
解决方案
按以下步骤操作即可解决:
- 第一步:清理本地无效依赖缓存
在项目根目录执行以下命令删除现有依赖、锁文件和缓存:
rmdir /s /q node_modules del package-lock.json npm cache clean --force
- 第二步:配置强制依赖复用规则
如果你的npm版本在v8.3及以上,在package.json中新增overrides字段,强制所有依赖统一使用根目录安装的webpack版本:
{ "name": "ui-addin", "version": "1.0.0", // 原有其他配置保持不变 "overrides": { "custom-functions-metadata-plugin": { "webpack": "$webpack" } } }
如果你使用yarn作为包管理器,将overrides替换为resolutions即可,配置内容一致。
- 第三步:重新安装依赖
执行npm install完成依赖安装。 - 第四步:验证启动
运行npm run dev-server验证服务是否正常启动。
临时备选方案
如果不想修改package.json配置,可以临时删除插件目录下的独立webpack副本,每次重新安装依赖后执行一次即可:
rmdir /s /q node_modules\custom-functions-metadata-plugin\node_modules\webpack
内容的提问来源于stack exchange,提问作者Manish Kumar
相关产品推荐
相关产品推荐

