Replace generic Error instances with NativeModuleError in loadDatabaseModule
to provide more structured error information, including rebuild status and
restart requirements. Update getAuthStatus to re-throw NativeModuleError
instances without wrapping.
Remove the local clearRequireCache function from database.js and import it from
utils/native-module-helper.js. Update the function call to pass require.cache
as the second parameter for proper cache clearing.
When Node.js is updated, native modules like better-sqlite3 can become
incompatible due to NODE_MODULE_VERSION differences. This change adds
automatic detection and rebuild capability:
- Add native-module-helper.js utility for detecting version errors
- Lazy-load better-sqlite3 to catch import errors at runtime
- Automatically run npm rebuild when version mismatch is detected
- Clear require cache and retry loading after successful rebuild
- Provide clear instructions if automatic rebuild fails
Fixes the issue where users running via npx encounter module errors
after updating Node.js.