@nimayoleynik

Как правильно собрать sqlite3 под node-webkit?

Нужно работать с внешним файлом БД, для работы с ним подключить sqlite3 модуль нода, для этого пересобрать NW.
Что только не пробовал чтобы собрать sqlite3 под node-webkit...

В основном следовал инструкции www.technerium.ru/nwjs/vklyuchenie-sqlite3-v-proek...

На последнем шаге при сборке sqlite3 вылетает куча ошибок
spoiler
npm install sqlite3 --build-from-source --runtime=node-webkit --target_arch=x64 --target=0.28.0
> sqlite3@3.1.13 install C:\Users\LiOn\Desktop\PS\node_modules\sqlite3
> node-pre-gyp install --fallback-to-build

File "", line 1
import sys; print sys.byteorder
^
SyntaxError: invalid syntax
gyp: Call to 'python -c "import sys; print sys.byteorder"' returned exit status 1 while in binding.gyp. while trying to load binding.gyp
gyp ERR! configure error
gyp ERR! stack Error: `gyp` failed with exit code: 1
gyp ERR! stack at ChildProcess.onCpExit (C:\Users\LiOn\AppData\Roaming\npm\node_modules\nw-gyp\lib\configure.js:359:16)
gyp ERR! stack at emitTwo (events.js:126:13)
gyp ERR! stack at ChildProcess.emit (events.js:214:7)
gyp ERR! stack at Process.ChildProcess._handle.onexit (internal/child_process.js:198:12)
gyp ERR! System Windows_NT 10.0.16299
gyp ERR! command "C:\\Program Files\\nodejs\\node.exe" "C:\\Users\\LiOn\\AppData\\Roaming\\npm\\node_modules\\nw-gyp\\bin\\nw-gyp.js" "configure" "--fallback-to-build" "--module=C:\\Users\\LiOn\\Desktop\\PS\\node_modules\\sqlite3\\lib\\binding\\node-webkit-v0.28.0-win32-x64\\node_sqlite3.node" "--module_name=node_sqlite3" "--module_path=C:\\Users\\LiOn\\Desktop\\PS\\node_modules\\sqlite3\\lib\\binding\\node-webkit-v0.28.0-win32-x64" "--python=python2.7" "--msvs_version=2015"
gyp ERR! cwd C:\Users\LiOn\Desktop\PS\node_modules\sqlite3
gyp ERR! node -v v8.9.4
gyp ERR! nw-gyp -v v3.6.3
gyp ERR! not ok
node-pre-gyp ERR! build error
node-pre-gyp ERR! stack Error: Failed to execute 'nw-gyp.cmd configure --fallback-to-build --module=C:\Users\LiOn\Desktop\PS\node_modules\sqlite3\lib\binding\node-webkit-v0.28.0-win32-x64\node_sqlite3.node --module_name=node_sqlite3 --module_path=C:\Users\LiOn\Desktop\PS\node_modules\sqlite3\lib\binding\node-webkit-v0.28.0-win32-x64 --python=python2.7 --msvs_version=2015' (1)
node-pre-gyp ERR! stack at ChildProcess. (C:\Users\LiOn\Desktop\PS\node_modules\sqlite3\node_modules\node-pre-gyp\lib\util\compile.js:83:29)
node-pre-gyp ERR! stack at emitTwo (events.js:126:13)
node-pre-gyp ERR! stack at ChildProcess.emit (events.js:214:7)
node-pre-gyp ERR! stack at maybeClose (internal/child_process.js:925:16)
node-pre-gyp ERR! stack at Process.ChildProcess._handle.onexit (internal/child_process.js:209:5)
node-pre-gyp ERR! System Windows_NT 10.0.16299
node-pre-gyp ERR! command "C:\\Program Files\\nodejs\\node.exe" "C:\\Users\\LiOn\\Desktop\\PS\\node_modules\\sqlite3\\node_modules\\node-pre-gyp\\bin\\node-pre-gyp" "install" "--fallback-to-build"
node-pre-gyp ERR! cwd C:\Users\LiOn\Desktop\PS\node_modules\sqlite3
node-pre-gyp ERR! node -v v8.9.4
node-pre-gyp ERR! node-pre-gyp -v v0.6.38
node-pre-gyp ERR! not ok
Failed to execute 'nw-gyp.cmd configure --fallback-to-build --module=C:\Users\LiOn\Desktop\PS\node_modules\sqlite3\lib\binding\node-webkit-v0.28.0-win32-x64\node_sqlite3.node --module_name=node_sqlite3 --module_path=C:\Users\LiOn\Desktop\PS\node_modules\sqlite3\lib\binding\node-webkit-v0.28.0-win32-x64 --python=python2.7 --msvs_version=2015' (1)
npm WARN PSS@1.0.0 No repository field.
npm WARN PSS@1.0.0 No license field.

npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! sqlite3@3.1.13 install: `node-pre-gyp install --fallback-to-build`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the sqlite3@3.1.13 install script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

npm ERR! A complete log of this run can be found in:
npm ERR! C:\Users\LiOn\AppData\Roaming\npm-cache\_logs\2018-01-28T07_28_14_473Z-debug.log


Пробовал просто

npm install sqlite3 --build-from-source

Так собирает но при компиляции проекта не может найти

node_modules\sqlite3\lib\binding\node-webkit-v0.28.0-win32-x64\node_sqlite3.node

тк там
node_modules\sqlite3\lib\binding\node-v57-win32-x64\node_sqlite3.node


Пробовал даже тупо переименовать имеющуюся папку в требуемую но от этого ошибки уже в nw.js появляются.
  • Вопрос задан
  • 77 просмотров
Решения вопроса 1
@nimayoleynik
Случайно нашел better-sqlite3 который намного шустрее просто sqlite3.
Там же прилагалась инструкция Troubleshooting installation (что делать в случае ошибок во время установки), благодаря ей удалось все удачно собрать.

Проблем было несколько:
1) python 3.x версии, когда поддерживается только 2.x.
2) Не было Visual Studio 2015 (были 2008, 2010, 2013, 2017), но нужна была именно 2015.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через TM ID
Похожие вопросы
22 июля 2018, в 20:41
10000 руб./за проект
22 июля 2018, в 20:13
2000 руб./за проект