为了让 Orbitdb 与 IPFS 一起工作,可能有一些额外的依赖项没有在任何地方具体提及。我尝试从文档中创建一个简单的键值数据库:
orbit.js
const IPFS = require("ipfs");
const OrbitDB = require("orbit-db");
const ipfsOptions = {
EXPERIMENTAL: {
pubsub: true
}
};
const ipfs = await IPFS.create(ipfsOptions);
const orbitdb = await OrbitDB.createInstance(ipfs);
const db = await orbitdb.create("test", "keyvalue", {
overwrite: true,
replicate: true,
accessController: {
type: "ipfs",
admin: ["*"],
write: ["*"]
}
});
await db.set("hello", "world");
console.log(db.all);
我有以下依赖项package.json
:
"dependencies": {
"ipfs": "^0.46.0",
"orbit-db": "^0.24.1"
}
它抛出了以下错误:
Trace: Error: Could not append entry, key "..." is not allowed to write to the log
我尝试解决它,但似乎没有任何效果。现在,有趣的部分来了。因此,我目前正在开发将使用 Orbitdb 的代码的前端部分。出于纯粹的运气(好奇),我将文件复制粘贴orbit.js
到包含前端代码的根文件夹中。在那里运行相同的文件,运行良好,成功创建数据库!package.json
以下是前端代码(在 Angular 中)中的所有依赖项和开发依赖项:
"dependencies": {
"@akveo/ng2-completer": "^9.0.1",
"@angular/animations": "^9.0.4",
"@angular/cdk": "^9.1.2",
"@angular/common": "^9.0.4",
"@angular/compiler": "^9.0.4",
"@angular/core": "^9.0.4",
"@angular/forms": "^9.0.4",
"@angular/google-maps": "^9.1.0",
"@angular/material": "^9.1.0",
"@angular/platform-browser": "^9.0.4",
"@angular/platform-browser-dynamic": "^9.0.4",
"@angular/router": "^9.0.4",
"@asymmetrik/ngx-leaflet": "3.0.1",
"@nebular/auth": "5.0.0",
"@nebular/eva-icons": "5.0.0",
"@nebular/security": "5.0.0",
"@nebular/theme": "5.0.0",
"@swimlane/ngx-charts": "^13.0.2",
"angular2-chartjs": "0.4.1",
"bootstrap": "4.3.1",
"chart.js": "^2.9.3",
"ckeditor": "4.7.3",
"classlist.js": "1.1.20150312",
"core-js": "2.5.1",
"env-paths": "^2.2.0",
"eva-icons": "^1.1.3",
"intl": "1.2.5",
"ionicons": "2.0.1",
"ipfs": "^0.46.0",
"it-all": "^1.0.2",
"leaflet": "1.2.0",
"metamask-logo": "^2.2.1",
"nebular-icons": "1.1.0",
"nedb": "^1.8.0",
"ng2-ckeditor": "^1.2.2",
"ng2-smart-table": "^1.6.0",
"node-sass": "^4.14.1",
"normalize.css": "6.0.0",
"orbit-db": "^0.24.1",
"pace-js": "1.0.2",
"roboto-fontface": "0.8.0",
"rxjs": "6.5.4",
"rxjs-compat": "6.3.0",
"socicon": "3.0.5",
"style-loader": "^1.1.3",
"test-ipfs-example": "^2.0.3",
"tinymce": "4.5.7",
"tslib": "^1.10.0",
"typeface-exo": "0.0.22",
"web-animations-js": "^2.3.2",
"web3": "^1.2.9",
"zone.js": "~0.10.2"
},
"devDependencies": {
"@angular-devkit/build-angular": "^0.901.7",
"@angular/cli": "^9.0.4",
"@angular/compiler-cli": "^9.0.4",
"@angular/language-service": "9.0.4",
"@compodoc/compodoc": "^1.1.11",
"@fortawesome/fontawesome-free": "^5.2.0",
"@types/d3-color": "1.0.5",
"@types/googlemaps": "^3.39.3",
"@types/jasmine": "2.5.54",
"@types/jasminewd2": "2.0.3",
"@types/leaflet": "1.2.3",
"@types/node": "^12.11.1",
"codelyzer": "^5.1.2",
"conventional-changelog-cli": "1.3.4",
"husky": "0.13.3",
"jasmine-core": "2.6.4",
"jasmine-spec-reporter": "4.1.1",
"karma": "1.7.1",
"karma-chrome-launcher": "2.1.1",
"karma-cli": "1.0.1",
"karma-coverage-istanbul-reporter": "1.3.0",
"karma-jasmine": "1.1.0",
"karma-jasmine-html-reporter": "0.2.2",
"npm-run-all": "4.0.2",
"protractor": "5.1.2",
"rimraf": "2.6.1",
"stylelint": "7.13.0",
"ts-node": "3.2.2",
"tslint": "^5.7.0",
"tslint-language-service": "^0.9.9",
"typescript": "3.7.5"
}
我知道这些依赖项中的大多数甚至与 Orbitdb 无关,我绝对可以将它们缩小到特定的依赖项,但有人可以解释一下它为什么在这里工作。我对使用 Orbitdb 完全陌生。