'private: true' 和 'lsd: false' 未被识别为有效的 torrent 选项,不允许将 torrent 转换为私有。节点 |网络洪流

'private: true' and 'lsd: false' not recognised as valid torrent options, won't allow torrent to be converted to private. NodeJS | WebTorrent

您使用的是什么版本的软件包?

webtorrent@0.107.17

webtorrent-hybrid@4.0.2

什么操作系统,Node.js,npm 版本? OS: Linux 精简版 5(64 位)

Node.js: 14.15.1

npm: 6.14.8

发生了什么事?

我通常按照文档初始化客户端。像这样:

this.webTorrentClient = new WebTorrentHybrid({tracker: true, dht: true});

但是,我只是想将我的 torrent 切换为私有,这样它就不会发布到 DHT、PEX 和 LSD。我特别要求禁用 LSD。我再次按照文档,添加了 opts 并像这样放入私有标志:

this.webTorrentClient.add(magnetUri, {private: true}, (torrent) => {
        //did my task here
      });

奇怪的是,我收到了这个错误,指出这个特定的 属性 在 torrent 选项中不存在

Argument of type '{ private: boolean; }' is not assignable to parameter of type 'TorrentOptions'.
  Object literal may only specify known properties, and 'private' does not exist in type 'TorrentOptions'

面对这个错误,我最初认为可能选择 WebTorrentHybrid 与 WebTorrent 不同,但当我获取文档时,他们说它完全相同。然后我尝试将 private: true 放入 .seed 方法中,但收到了同样的错误。

或者我想,因为我只想禁用 LSD 并挖掘提交历史,我发现还添加了一个禁用 LSD 的选项。 (参考这里的提交 ID:https://github.com/webtorrent/webtorrent/commit/0ba67b8e8f54d888ba0dd14a6e5f4a18d46e1294)。所以我尝试将 lsd: false 放在 .add.seed 中,但还是没有骰子。同样的错误。

在这一点上,我觉得也许我以错误的格式传递了选项,但尝试了其他选项。他们工作得很好。我尝试将 path: '/mnt/drive1/' 放在 .add.seed 中,如下所示:

this.webTorrentClient.add(magnetUri, {path: '/mnt/drive1/'}, (torrent) => {
        //did my task here
      });

而且效果非常好,同样我试过 maxWebConns: 3 也很管用!出于某种原因,只有 private 和 lsd 在我的情况下似乎不起作用。快速 google 搜索显示没有其他人有类似的问题,我很困惑!

我一直在关注这里的官方文档:https://webtorrent.io/docs

对于面临相同问题的任何人。我通过使用这些命令手动更新以下包解决了上述问题:

npm update --save/--save-dev
npm install webtorrent@latest --save-dev
npm install @types/webtorrent@latest --save-dev

我曾运行 npm update --save/--save-dev 多次寻求解决此问题。但出于某种原因,即使没有任何重大更改,这些软件包也没有更新。 运行ning npm outdated 意识到它们已经过时,然后使用上面的命令手动更新解决了它!