Node.js
16.14.2,npm
8.19.2。
我正在尝试运行一个导入OrbitDB
的简单的OrbitDB
脚本。下面是脚本:
hello_orbitdb.js
// import the package
const OrbitDB = require('orbit-db');
下面是我试图运行它的方法,以及我所得到的错误:
$ node hello_orbitdb.js
node:internal/modules/cjs/loader:488
throw e;
^
Error [ERR_PACKAGE_PATH_NOT_EXPORTED]: Package subpath './cid' is not defined by "exports" in /node_modules/multiformats/package.json
at new NodeError (node:internal/errors:371:5)
at throwExportsNotFound (node:internal/modules/esm/resolve:453:9)
at packageExportsResolve (node:internal/modules/esm/resolve:671:7)
at resolveExports (node:internal/modules/cjs/loader:482:36)
at Function.Module._findPath (node:internal/modules/cjs/loader:522:31)
at Function.Module._resolveFilename (node:internal/modules/cjs/loader:919:27)
at Function.Module._load (node:internal/modules/cjs/loader:778:27)
at Module.require (node:internal/modules/cjs/loader:1005:19)
at require (node:internal/modules/cjs/helpers:102:18)
at Object.<anonymous> (/node_modules/orbit-db/src/orbit-db-address.js:3:17) {
code: 'ERR_PACKAGE_PATH_NOT_EXPORTED'
}
所以我看了一下/node_modules/orbit-db/src/orbit-db-address.js
,它是如何开始的:
'use strict'
const path = require('path')
const { CID } = require('multiformats/cid')
如何纠正此错误?
在我的node_modules
文件夹中
"name": "orbit-db",
"version": "0.28.7",
和
"name": "multiformats",
"version": "10.0.2",
发布于 2022-10-28 05:40:47
你的问题听起来就像依赖问题。
首先,尝试删除node_modules目录并发出一个npm install
,以便重新导入依赖项。
如果问题持续存在,发出一个npm install --save multiformats@9.9.0
,看看这是否纠正了您的问题。
发布于 2022-10-30 01:45:38
您的主要问题是orbit-db
依赖于自v1.0.0
以来一直是ES模块的multiformats
,但是您展示的orbit-db
源代码有
const { CID } = require('multiformats/cid')
ES模块只能通过动态的CommonJS语句加载到import()
模块中。请参阅ES模块require
上的require
文档。
不支持使用require加载ES模块,因为ES模块具有异步执行。相反,使用import()从CommonJS模块加载ES模块。
您必须打开一个PR,将require
更新为动态import('multiformats/cid')
。最好的位置可能是区块,但是接下来您将把static isValid
方法的API从同步更改为异步。似乎没有在很多地方被使用和API似乎是内部的,也就是不面向公众的,这不是一个很大的努力。
不过,您可能更喜欢使用更简单的路由,并将您的版本的orbit-db
降级,而不是v0.26.0
( 使用 ),后者是旧的cids
包(即CommonJS )。
更新package.json条目以获取orbit-db
"orbit-db": "^0.26.0"
重新安装:
npm i
https://stackoverflow.com/questions/74172640
复制相似问题