Orbitdb does not work on Nest.js.
ismail-bs opened this issue · comments
Show two errors
const core_1 = require("@orbitdb/core");
^
Error [ERR_REQUIRE_ESM]: require() of ES Module /home/Projects/orbitdb_test/node_modules/@orbitdb/core/src/index.js from /home/Projects/orbitdb_test/dist/modules/db.service.js not supported.
and
Error: No "exports" main defined in /home/Projects/orbitdb_test/node_modules/ipfs-core/package.json
My orbitdb service code
import { Injectable, OnModuleDestroy, OnModuleInit } from '@nestjs/common';
import * as IFRS from 'ipfs-core';
import { createOrbitDB } from '@orbitdb/core';
@Injectable()
export class DBService implements OnModuleInit, OnModuleDestroy {
private ipfs: any;
private orbitdb: any;
async onModuleInit() {
this.ipfs = await IFRS.create();
this.orbitdb = await createOrbitDB({ ipfs: this.ipfs });
const db = await this.orbitdb.open('hello');
db.events.on('update', async (entry) => {
console.log(entry);
const all = await db.all();
console.log(all);
});
}
async onModuleDestroy() {
await this.orbitdb.stop();
await this.ipfs.stop();
}
async addData(data: string) {
const db = await this.orbitdb.open('hello');
const hash = await db.add(data);
console.log('Hash:', hash);
await db.close();
}
async getAllData() {
const db = await this.orbitdb.open('hello');
const allData = await db.all();
await db.close();
return allData;
}
}
my package.json file
{
"name": "orbitdb_esm_test",
"version": "0.0.1",
"description": "",
"author": "",
"private": true,
"license": "UNLICENSED",
"scripts": {
"build": "nest build",
"format": "prettier --write \"src/**/*.ts\" \"test/**/*.ts\"",
"start": "nest start",
"start:dev": "nest start --watch",
"start:debug": "nest start --debug --watch",
"start:prod": "node dist/main",
"lint": "eslint \"{src,apps,libs,test}/**/*.ts\" --fix",
"test": "jest",
"test:watch": "jest --watch",
"test:cov": "jest --coverage",
"test:debug": "node --inspect-brk -r tsconfig-paths/register -r ts-node/register node_modules/.bin/jest --runInBand",
"test:e2e": "jest --config ./test/jest-e2e.json"
},
"dependencies": {
"@nestjs/common": "^10.0.0",
"@nestjs/core": "^10.0.0",
"@nestjs/platform-express": "^10.0.0",
"@orbitdb/core": "^1.0.0",
"ipfs-core": "^0.18.1",
"reflect-metadata": "^0.1.13",
"rxjs": "^7.8.1"
},
"devDependencies": {
"@nestjs/cli": "^10.0.0",
"@nestjs/schematics": "^10.0.0",
"@nestjs/testing": "^10.0.0",
"@types/express": "^4.17.17",
"@types/jest": "^29.5.2",
"@types/node": "^20.3.1",
"@types/supertest": "^2.0.12",
"@typescript-eslint/eslint-plugin": "^6.0.0",
"@typescript-eslint/parser": "^6.0.0",
"eslint": "^8.42.0",
"eslint-config-prettier": "^9.0.0",
"eslint-plugin-prettier": "^5.0.0",
"jest": "^29.5.0",
"prettier": "^3.0.0",
"source-map-support": "^0.5.21",
"supertest": "^6.3.3",
"ts-jest": "^29.1.0",
"ts-loader": "^9.4.3",
"ts-node": "^10.9.1",
"tsconfig-paths": "^4.2.0",
"typescript": "^5.1.3"
},
"jest": {
"moduleFileExtensions": [
"js",
"json",
"ts"
],
"rootDir": "src",
"testRegex": ".*\\.spec\\.ts$",
"transform": {
"^.+\\.(t|j)s$": "ts-jest"
},
"collectCoverageFrom": [
"**/*.(t|j)s"
],
"coverageDirectory": "../coverage",
"testEnvironment": "node"
}
}
const core_1 = require("@orbitdb/core");
You will need to use ES's import() with OrbitDB. require is not supported.
Error: No "exports" main defined in /home/Projects/orbitdb_test/node_modules/ipfs-core/package.json
Looks like an IPFS issue. You may get better support directly from IPFS.
const core_1 = require("@orbitdb/core");
You will need to use ES's import() with OrbitDB. require is not supported.
Error: No "exports" main defined in /home/Projects/orbitdb_test/node_modules/ipfs-core/package.json
Looks like an IPFS issue. You may get better support directly from IPFS.
I already used the import statement
import { createOrbitDB } from '@orbitdb/core
';
When I run the NestJS project, it gives this error.
If you would like to create a small project I can take a quick look but I have no experience with NestJS and this looks more like a build problem rather than an issue with the OrbitDB package.
You may want to reach out to NestJS because the require
error you report looks out of place.
It may also be worth asking around in the OrbitDB lobby and seeing if other community members have had success or are experiencing similar issues.
I also notice that a similar error has been reported on NestJS's Github issues. Perhaps related?
Closing due to inactivity.