Using Sequelize with sqlite3 inside an Electron app
A few months ago I ran into some problems when I tried to use Sequelize with sqlite3 inside an Electron app. This post will walk you through fixing this issue.
Update 8th of May 2020
The method below may not be needed anymore. All you have to do now is to use electron-builder and place a short script in your package.json.
npm install --save-dev electron-builder
And then add the following code in your package.json scripts:
"postinstall": "electron-builder install-app-deps"
Introduction
A few months ago I ran into some problems when I tried to use Sequelize with sqlite3 inside an Electron app. Even though I installed everything properly, I was getting this error:
Uncaught Error: The dialect sqlite is not supported. (Error: Please install sqlite3 package manually)
I was able to fix this using this website but it appears to be down now. I decided to write down the method here and also adding a bit more details on how to solve the problem.
Solution
Go to node_modules/sequelize/lib/dialects/sqlite/connection-manager.js
and identify the MODULE_NOT_FOUND
error code. Log the error with a console.log(err)
before the error is thrown.
Run the application and you will get a more detailed error:
{ Error: Cannot find module 'C:\Users\user\Documents\devStuff\work\app\server\node_modules\sqlite3\lib\binding\electron-v4.1-win32-x64\node_sqlite3.node'
Note the electron-v4.1-win32-x64
. You might have something different depending on the electron version you installed
Update and run the following commands to make this work:
cd node_modules/sqlite3 && npm install nan
node-gyp configure --module_name=node_sqlite3 --module_path=../lib/binding/electron-v4.1-win32-x64
node-gyp build --target=4.1.4 --arch=x64 --target_platform=win32 --dist-url=https://atom.io/download/atom-shell --module_name=node_sqlite3 --module_path=../lib/binding/electron-v4.1-win32-x64
--module_path
replace with what you got from the MODULE_NOT_FOUND error
--target_platform
win32, darwin or linux
--arch
x64 or ia32
--target
the version of electron you are using
If there are issues on Windows about MSB4019, check this issue https://github.com/brianmcd/contextify/issues/96
That's all
By following the steps above I managed to make the configuration work on Windows and Mac. Hopefully this solves the problem for you too.
If you still encounter the problem, check this post on stackoverflow. It offers multiple approaches.