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

Angular Universal项目因依赖的依赖引发preact导出错误求助

解决preact/compat找不到_unmount导出的错误

问题原因

项目中多个子依赖(@walletconnect/web3-provider、onfido-sdk-ui、walletlink)分别依赖不同版本的preact(10.4.1、10.9.0、10.6.4),npm依赖解析时会将较低版本的preact提升到顶层,而preact/compat需要的_unmount是preact较新版本才有的内部导出,低版本不包含该导出,因此触发报错。

解决方案

1. 强制统一所有preact子依赖的版本

在项目根目录的package.json中添加resolutions字段,强制所有子依赖使用同一个兼容的preact版本(推荐10.11.0及以上,该版本包含_unmount导出):

"resolutions": {
  "preact": "^10.11.0"
}

由于npm本身不支持resolutions,需借助npm-force-resolutions工具生效:

  • 安装工具:npm install -D npm-force-resolutions
  • 修改package.json的scripts,添加预处理命令:
    "scripts": {
      "preinstall": "npx npm-force-resolutions"
    }
    
  • 执行清理重装:
    rm -rf node_modules package-lock.json
    npm install --legacy-peer-deps
    

2. 匹配preact/compat版本(若问题仍存在)

先检查哪个依赖引入了preact/compat:

npm ls preact/compat

找到对应依赖后,在resolutions中同步指定preact/compat的版本,确保和preact版本一致:

"resolutions": {
  "preact": "^10.11.0",
  "preact/compat": "^10.11.0"
}

重复上述清理重装步骤。

3. 升级引入preact的子依赖

尝试将依赖preact的包升级到最新版本,新版本可能已修复版本兼容问题:

npm update @walletconnect/web3-provider onfido-sdk-ui walletlink --legacy-peer-deps

升级后执行清理重装,验证问题是否解决。

4. 替换冲突依赖(可选)

若以上方法无效,可考虑替换掉部分依赖,比如寻找不依赖preact的web3 provider或身份验证SDK,从根源避免版本冲突。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 06:06:30