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

如何从Cargo.lock中排除Wasm相关依赖?

解决Cargo.lock中引入Wasm相关冗余依赖的方法

你的问题源于ring 0.16.20仅针对wasm32-unknown-unknown这类Wasm目标平台声明了web-sys依赖,但Cargo默认可能会解析全平台依赖规则,导致wasm-bindgen等Wasm相关包被写入Cargo.lock。以下是几种可行的解决方式:

  • 指定目标平台构建
    构建项目时明确指定非Wasm的目标平台,比如针对x86_64架构的Linux系统:

    cargo build --target x86_64-unknown-linux-gnu
    

    也可以在项目根目录的.cargo/config.toml中设置默认目标,避免每次手动输入:

    [build]
    target = "x86_64-unknown-linux-gnu"
    

    此方式下Cargo只会为指定目标解析依赖,不会拉取Wasm相关的冗余包。

  • 启用Cargo resolver 2
    在Cargo.toml的[package]区块中添加resolver = "2",它能更精准地处理条件依赖(比如仅针对特定target的依赖),避免拉取当前目标不需要的包:

    [package]
    name = "your-project-name"
    version = "0.1.0"
    resolver = "2"  # 添加该行启用新版依赖解析器
    
    [dependencies]
    jsonwebtoken = "8.2.0"
    
  • Patch ring依赖移除Wasm相关规则
    如果上述方法无效,可通过patch功能修改ring的依赖声明,强制排除仅Wasm需要的web-sys:

    [dependencies]
    jsonwebtoken = "8.2.0"
    
    [patch.crates-io]
    ring = { version = "0.16.20", dependencies = {} }
    

    由于web-sys原本就只在Wasm环境中生效,非Wasm平台下ring并不依赖它,因此该修改不会影响项目正常功能。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 07:00:59