错误:无法为`syn`选择版本

问题描述 投票:0回答:4
error: failed to select a version for `syn`. \
    ... required by package `serde_derive v1.0.125`\
    ... which satisfies dependency `serde_derive = "=1.0.125"` of package `serde v1.0.125`    
    ... which satisfies dependency `serde = "^1.0.125"` of package `mongodb v2.1.0`\
    ... which satisfies dependency `mongodb = "^2.1"` of package `wagmeet v0.1.0 
 \(/mnt/e/College/Eighth Semester/Crypto_Capable/wagmeet_app)`\
versions that meet the requirements `^1.0.60` are: 1.0.86, 1.0.85, 1.0.84, 1.0.83, 1.0.82, 1.0.81, 1.0.80, 1.0.79, 1.0.78, 1.0.77, 1.0.76, 1.0.75, 1.0.74, 1.0.73, 1.0.72, 1.0.71, 1.0.70, 1.0.69, 1.0.68, 1.0.67, 1.0.66, 1.0.65, 1.0.64, 1.0.63, 1.0.62, 1.0.61, 1.0.60

all possible versions conflict with previously selected packages.

  previously selected package `syn v1.0.57`\
    ... which satisfies dependency `syn = "=1.0.57"` 
    \ of package `near-sdk-core v3.0.1`
    ... which satisfies dependency `near-sdk-core = "=3.0.1"` of package `near-sdk-macros v3.0.1` \
    ... which satisfies dependency `near-sdk-macros = "=3.0.1"` \ of package `near-sdk v3.0.1`   
    ... which satisfies dependency `near-sdk = "^3"` of package `wagmeet v0.1.0 `\

failed to select a version for `syn` which could resolve this conflict

Cargo.toml 文件

[package]
name = "wagmeet"
version = "0.1.0"
edition = "2021"

[lib]
crate-type = ["rlib","cdylib"]

[dependencies]
near-sdk = "^3.1.0"
near-contract-standards = "^3.1.1"
mongodb = "2.0.0"
bson = { version = "2", features = ["chrono-0_4"] } # Needed for using chrono datetime in doc
tokio = "1"
chrono = "0.4" # Used for setting DateTimes
serde = "1"
serde_derive = "1.0.135"
  • 更新 添加了cargo.toml文件

我已经尝试了各种版本,但目前似乎没有任何效果。 mongoDb 是否兼容近协议?

rust rust-cargo rust-tokio nearprotocol rust-diesel
4个回答
5
投票

您的两个依赖项之间存在冲突:

near-sdk
需要完全
syn
版本
1.0.57
,而
mongodb
需要至少
syn
版本
1.0.60
。显然两者不能共存。

你的解决方案很少:

  • 修补
    near-sdk
    以支持更高版本的
    syn
    。通常不建议这样做。
  • near-sdk
    升级到预发行版
    4.0.0
    当前为 4.0.0-pre.7),以支持更高版本的
    syn
    。这是一个不稳定的版本,可能会崩溃。
  • mongodb
    降级到支持
    syn
    版本
    1.0.57
    的版本。支持该功能的最新版本是 1.2.5,因此您需要在 Cargo.toml
    mongodb = "=1.2.5"
    中指定。但这依赖于旧的、不受支持的版本。

没有“最佳解决方案”。所有的解决方案都是不好的。我可能会将

near-sdk
升级到 4.0.0,但具体做什么取决于您的需求。


0
投票

当您使用指向不同版本的依赖项的工作区和多个 toml 文件时,可能会出现这种情况。当您在 bin 项目中使用依赖项时,它们会发生冲突并将错误转储给您。

确保所有依赖项都指向相同的 lib 版本并运行

cargo update


0
投票

当我添加 git 依赖项时出现此错误。跑步

cargo update

解决了问题。

更多信息:

我得到的错误是:

all possible versions conflict with previously selected packages.

  previously selected package `bytemuck v1.13.1`
    ... which satisfies dependency `bytemuck = "^1.7"` (locked to 1.13.1) of package `eframe v0.23.0`
    ... which satisfies dependency `eframe = "^0.23.0"` (locked to 0.23.0) of package `myproject v1.4.0 

failed to select a version for `bytemuck` which could resolve this conflict

然后货物更新导致:

Updating crates.io index
    Updating git repository `https://github.com/huggingface/candle.git`
    Updating ab_glyph v0.2.21 -> v0.2.23
    Updating accesskit v0.11.0 -> v0.11.2
    Updating accesskit_consumer v0.15.0 -> v0.15.2
    Updating accesskit_macos v0.7.1 -> v0.9.0
    Updating accesskit_unix v0.5.0 -> v0.5.2
    Updating accesskit_windows v0.14.0 -> v0.14.3
    Updating accesskit_winit v0.14.1 -> v0.14.4
      Adding addr2line v0.21.0
    ... and a whole lot more of Updating, Adding, and Removing.

-1
投票

尝试以下方法...

  • 检查已修补的依赖项是否指向正确的源存储库
  • 如果您使用其他项目的 Cargo.lock 或更改一些依赖项,请删除目标文件夹并再次构建
  • 检查编译日志是否有不正确的依赖路径!
  • 更新你的 Rust
  • 删除 .cargo 和 .rustup 目录
© www.soinside.com 2019 - 2024. All rights reserved.