lmdb-js icon indicating copy to clipboard operation
lmdb-js copied to clipboard

Cannot read properties of undefined (reading 'maxLength')

Open alexgleason opened this issue 2 years ago • 3 comments

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

alexgleason avatar Apr 29 '23 22:04 alexgleason

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.

kriszyp avatar May 01 '23 02:05 kriszyp

Use deno run --watch myfile.ts

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

alexgleason avatar May 01 '23 03:05 alexgleason

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.

kriszyp avatar May 01 '23 11:05 kriszyp