orbit-db (.createInstance ) fails - OpenError: IO error: /keystore/LOCK: No such file or directory

88 Views Asked by At

OpenError: IO error: /home/user/.Fennec/Beeblebrox/12D3KooWD9HKFwR4tTjFnfdgs8FeseWTnGvf5RJmZ79nEtbm83Ew/keystore/LOCK: No such file or directory at /home/user/programs/Fennec/node_modules/orbit-db-storage-adapter/node_modules/levelup/lib/levelup.js:119:23 at /home/user/programs/Fennec/node_modules/orbit-db-storage-adapter/node_modules/deferred-leveldown/node_modules/abstract-leveldown/abstract-leveldown.js:38:14 at /home/user/programs/Fennec/node_modules/orbit-db-storage-adapter/node_modules/deferred-leveldown/deferred-leveldown.js:31:21 at /home/user/programs/Fennec/node_modules/orbit-db-storage-adapter/node_modules/encoding-down/node_modules/abstract-leveldown/abstract-leveldown.js:38:14 at /home/user/programs/Fennec/node_modules/orbit-db-storage-adapter/node_modules/leveldown/node_modules/abstract-leveldown/abstract-leveldown.js:38:14

  • seems like orbitdb does not create db directory

  • but leveldb tries to open?

  • code

(.ensureDirSync fs (:Beeblebrox-data-dirpath root) (clj->js {:mode 0777}))

(let [ipfs (.create IPFSHttpClient "http://127.0.0.1:5001")
            orbitdb (<p!
                     (->
                      (.createInstance
                       OrbitDB ipfs
                       (clj->js
                        {"directory" (:Beeblebrox-data-dirpath root)}))
                      (.catch (fn [ex]
                                (println ex)))))]
        (println (.. orbitdb -identity -id)))


(comment
; fails as well
(<p! (.create IPFS (clj->js
                      {:repo (.join path (:program-data-dirpath root) "Sarah-Connor")})))
)
  • package.json
{
  "dependencies": {
    "orbit-db": "0.28.6",
    "ipfs": "0.62.3",
    "ipfs-http-client": "56.0.3"
  }
}
  • go-ipfs version is 0.12.2
1

There are 1 best solutions below

0
On
  • error has nothing to do with datahike on nodejs - Arthur-Dent
  • calling (set! (.-window js/global) js/global) causes the error
  • the call is needed for indexdbshim

solution

  • looked at src of indexdbshim - it does not need window, it knows glboal
  • this works
(defonce indexeddbshim (js/require "indexeddbshim"))
#_(set! (.-window js/global) js/global)
(indexeddbshim js/global #_(.-window js/global) #js{:checkOrigin false})