For Orbitdb to work with IPFS, perhaps there are some extra dependencies which are not mentioned anywhere specifically. I tried creating a simple key-value db referring from the docs:
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);
I had the following dependencies in my package.json
:
"dependencies": {
"ipfs": "^0.46.0",
"orbit-db": "^0.24.1"
}
It threw the following error:
Trace: Error: Could not append entry, key "..." is not allowed to write to the log
I tried resolving it but nothing seemed to work. Now, comes the interesting part. So, I am currently developing the frontend part of the code that will use Orbitdb. Out of sheer luck (curiosity), I copy pasted the file orbit.js
to the root folder containing the frontend code. Running the same file there, worked perfectly, creating the db successfully! Here are all the dependencies and dev-dependencies in the package.json
for the frontend code (which is in 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"
}
I know most of these dependencies don't even relate to Orbitdb, I can definitely narrow them down to particular dependencies but can someone throw some light onto why it worked here. I'm totally new to using Orbitdb.