npm:无法导入bencode模块

问题描述 投票:0回答:1

我正在尝试读取 torrent 文件数据。要解码,我想使用

bencode
包,但无法导入
bencode
模块。我尝试过谷歌、youtube、stackoverflow。没有什么发现。

代码

// index.js

const fs = require('fs');
const bencode = require('bencode');

const torrent = bencode.decode(fs.readFileSync('../sintel.torrent'));
console.log(torrent.announce.toString("utf8"));

CMD

PS C:\Users\samad\Desktop\read-torrent\read-torrent-nodejs> node index     
node:internal/modules/cjs/loader:598
      throw e;
      ^

Error [ERR_PACKAGE_PATH_NOT_EXPORTED]: No "exports" main defined in C:\Users\samad\Desktop\read-torrent\read-torrent-nodejs\node_modules\bencode\package.json
    at exportsNotFound (node:internal/modules/esm/resolve:294:10)
    at packageExportsResolve (node:internal/modules/esm/resolve:584:13)
    at resolveExports (node:internal/modules/cjs/loader:591:36)
    at Module._findPath (node:internal/modules/cjs/loader:668:31)
    at Module._resolveFilename (node:internal/modules/cjs/loader:1130:27)
    at Module._load (node:internal/modules/cjs/loader:985:27)
    at Module.require (node:internal/modules/cjs/loader:1235:19)
    at require (node:internal/modules/helpers:176:18)
    at Object.<anonymous> (C:\Users\samad\Desktop\read-torrent\read-torrent-nodejs\index.js:2:17)
    at Module._compile (node:internal/modules/cjs/loader:1376:14) {
  code: 'ERR_PACKAGE_PATH_NOT_EXPORTED'
}

Node.js v20.10.0

已经完成

> npm update
> npm install bencode  # reinstalling
> npm cache clean --force
> npm audit fix --force

注:

exports:
存在于bencode包的
package.json
文件中。

node.js npm bittorrent webtorrent
1个回答
0
投票

bencode 包是一个 ES 模块。您正在使用 CommonJS。正如Node 文档所述:

不支持使用require加载ES模块,因为ES模块是异步执行的。相反,使用 import() 从 CommonJS 模块加载 ES 模块。

您可以更改

package.json
以添加以下内容:

"type": "module",

然后你可以使用 ES Module

import
语法,如下所示:

import * as fs from 'fs';
import bencode from 'bencode'

注意:一旦更改

"type": "module"
,您将需要在整个项目中使用
import
来代替
require()

© www.soinside.com 2019 - 2024. All rights reserved.