kriszyp / lmdb-js

Simple, efficient, ultra-fast, scalable data store wrapper for LMDB
Other
481 stars 39 forks source link

Cannot read properties of undefined (reading 'maxLength') #225

Open alexgleason opened 1 year ago

alexgleason commented 1 year ago

This issue happens during local development with Deno.

Hot reloading is enabled. When a file is changed, the program stops working until I manually kill and restart the server:

Watcher File change detected! Restarting!
error: Uncaught TypeError: Cannot read properties of undefined (reading 'maxLength')
    at file:///home/alex/.cache/deno/npm/registry.npmjs.org/lmdb/2.7.11/read.js:8:20
Watcher Process finished. Restarting on file change...

https://github.com/kriszyp/lmdb-js/blob/master/read.js#L8

kriszyp commented 1 year ago

How do you do hot reloading in Deno? I suspect that hot reloading is possibly not reloading the NAPI module or getting the reference incorrectly, but not sure how to reproduce.

alexgleason commented 1 year ago

Use deno run --watch myfile.ts

Simply open a database in this app, add a comment or something and save.

kriszyp commented 1 year ago

Ok, thank you. I believe this actually appears to be a bug in Deno. lmdb-js uses two the NAPI modules (one for lmdb and one for msgpackr) and it is returning the wrong one after reloading (it is probably caching a single/last NAPI module). We should probably come up with a more isolated test case to submit to Deno. In the meantime you can set this env variable to disable the msgpackr NAPI module MSGPACKR_NATIVE_ACCELERATION_DISABLED=true.