如何解决webpack-cli cli.isMultipleCompiler is not a function
报错定位
第一行输出No production canister_ids.json found. Continuing with local是DFX开发框架的常规本地运行提示,不属于错误,不会导致程序崩溃。
核心报错原因是webpack工具链版本不兼容:本地安装的@webpack-cli/serve插件版本与webpack-cli主包版本错配,插件代码调用了主包未提供的isMultipleCompiler方法,触发类型错误。单纯全量重装依赖无法解决的核心原因是锁文件固定了错配的版本组合,重装不会自动修正版本依赖关系。
修复步骤
按顺序尝试,执行完一步就验证是否修复:
- 固定兼容版本组合
在项目根目录根据你使用的包管理器执行对应命令,安装经过验证的兼容版本:
npm用户执行:
yarn用户执行:npm install webpack-cli@4.10.0 @webpack-cli/serve@4.7.0 --save-dev
pnpm用户执行:yarn add webpack-cli@4.10.0 @webpack-cli/serve@4.7.0 --dev
执行完命令后,删除项目下的pnpm add webpack-cli@4.10.0 @webpack-cli/serve@4.7.0 -Dnode_modules目录和对应锁文件(package-lock.json/yarn.lock/pnpm-lock.yaml),重新执行依赖安装命令后重启服务。 - 排查全局包冲突
如果你之前全局安装过webpack-cli相关包,执行以下命令卸载全局版本,避免全局与本地项目包版本冲突:npm uninstall -g webpack-cli @webpack-cli/serve - 模板项目特殊处理
如果你的项目是基于DFX/IC官方前端模板初始化的,直接打开package.json,将webpack相关依赖的版本范围标记(^/~)删除,固定写死兼容版本号,避免后续安装依赖时自动拉取不兼容的更新版本。
验证标准
重新执行项目启动命令后,不再抛出TypeError: cli.isMultipleCompiler is not a function错误即为修复成功,启动日志中出现的canister_ids.json相关提示属于正常本地开发输出,无需额外处理。
内容的提问来源于stack exchange,提问作者David Martínez Gil
相关产品推荐
相关产品推荐

