Включение sqlite3 в проект NW.js

Модуль sqlite3, доступный для NodeJS приложений, требует сборки из исходников под каждую из платформ. Процесс построения довольно капризный и настройка всего необходимого может занять некоторое время.

В этой статье я привожу инструкцию по настройке окружения для того, чтобы ваш проект, использующий sqlite3 модуль, можно было собрать.

Рассматриваются операционные системы Windows 7 (x32, x64). Сразу замечу, что под 32- и 64-битные системы требуется отдельная сборка модуля.

Итак, рассматриваемое окружение - чистая винда.

 

Устанавливаем NodeJS

 

Я использую версию v0.12.9. Идем в список релизов https://nodejs.org/en/download/releases/, выбираем там подходящий, жмем на Downloads и попадаем на страницу установочных файлов. У меня Win x64, поэтому я пошел в папку x64 и загрузил инсталлятор https://nodejs.org/download/release/v0.12.9/x64/node-v0.12.9-x64.msi

Устанавливаем согласно дефолтным настройкам.

Проверяем: в консоли запускаем

d:\>node -v
v0.12.9

Всё, нода установлена и доступна в командной строке.

 

Устанавливаем Python

 

Нам нужен питон. Я использую актуальный релиз 2-й версии, 2.7.11. Идем по ссылке https://www.python.org/downloads/, качаем версию 2.7.11 или более новую 2-ю. Я качал x64 версию https://www.python.org/ftp/python/2.7.11/python-2.7.11.amd64.msi

Устанавливаем. Будьте внимательны, в диалоге выбора компонент для установки в самом низу выберите Add to PATH, чтобы питон был доступен в консоли.

Проверяем: в консоли запускаем

d:\>python --version
Python 2.7.11

Питон установлен и доступен.

 

Устанавливаем NW.js

 

Я сижу на v0.12.3, которую можно найти в архиве версий http://dl.nwjs.io/. Сборки с ia32 в названии предназначены для 32-битных систем. Я скачал 64-битную версию http://dl.nwjs.io/v0.12.3/nwjs-v0.12.3-win-x64.zip

Собственно установки и не требуется, просто распаковываем архив куда удобно, затем путь к корневой папке добавляем в PATH и всё.

Запускаем командой nw из консоли. Открывается окно демо-приложения, в правом нижнем углу видна версия. Раз приложение стартануло, значит всё в порядке.

 

Устанавливаем Visual C++

 

Нам нужен компилятор. Для установки всего необходимого, установите Visual Studio Express 2008/2005 или более новые сборки.

 

Обновляем NPM

 

Обновление NPM необходимо для того, чтобы избежать ошибок установки модулей. Существует полезная программа для автоматизации этого процесса: https://github.com/felixrieseberg/npm-windows-upgrade

Убедитесь, что обладаете правами администратора в системе. Затем в меню Start вбейте в поле поиска PowerShell, затем правой кнопкой кликните по ссылке на PowerShell и выберите Run as Administrator.

Откроется окно консоли. Запустите команду

Set-ExecutionPolicy Unrestricted -Scope CurrentUser -Force

затем установите программу для обновления:

npm install -g npm-windows-upgrade

потом запустите обновление

npm-windows-upgrade

Программа спросит хотите ли вы обновить менеджер NPM, наберие 'y' для того чтобы продолжить. Затем появится список доступных версий. Стрелками на клавиатуре двигайтесь по версиям. Я обновил до 3.8.5.

Выбрав версию, нажмите на Enter.

После завершения обновления проверьте что всё прошло нормально.

d:\>npm -v
3.8.5

Всё хорошо.

 

Установка nw-gyp

 

Осталось совсем немного до сборки sqlite3, надо всего лишь установить еще один модуль

Запустите в консоли

npm install nw-gyp -g

 

Сборка sqlite3

 

Инструкции доступны на страничке модуля https://www.npmjs.com/package/sqlite3

Под Win x64 (--target_arch=x64) и NW.js v0.12.3 (--runtime=node-webkit --target=0.12.3) необходимо собирать командой

npm install sqlite3 --build-from-source --runtime=node-webkit --target_arch=x64 --target=0.12.3

Для Win x32 соответственно

npm install sqlite3 --build-from-source --runtime=node-webkit --target_arch=ia32 --target=0.12.3

 

Напоследок

 

Насколько я понял, sqlite3 не позволяет собрать модуль для 32-битной системы находясь на x64. То есть, если вам нужно сбилдить версию под 32 бита, то нужно иметь под рукой [виртуалку] 32-битную винду со всем выше перечисленным.

Однако есть возможность запускать одну и ту же сборку на обеих системах если сделать так: собрать приложение по отдельности на 32 и на 64 битных машинах, затем скопировать папку

<APP_ROOT>\node_modules\sqlite3\lib\binding\node-webkit-v0.12.3-win32-ia32\

из сборки на 32 винде в соответствующую папку сборки на x64

<APP_ROOT>\node_modules\sqlite3\lib\binding\

Тогда папка биндинга будет содержать модуль и под 32 и под 63 бита. Такая комбинированная сборка запускается на обеих системах.

Теги: 
Категория: 
Была ли статья полезна: 

Комментарии

We are developing a NW/Sqlite desktop app. It already compiles and runs fine on Linux. We are looking for a freelancer to make a build for Windows 32 and x64 platforms. Are you available for a short time collaboration? Best regards, Boris