SQLite y NW.js: instrucciones paso a paso para crear fuertes amistades

隆Hola, Habr y sus habitantes! Quer铆a esculpir algo en HTML y JS para que fuera de escritorio y conveniente. 驴Qu茅 se necesita para esto? Derecho Node.js y NW.js o Electron. Al observar los d茅biles intentos de NW vs Electron holivar y leer la documentaci贸n de ambos, se tom贸 la decisi贸n de comenzar a sentir NW.js.

Pero aqu铆 hay una emboscada. La ejecuci贸n de npm i sqlite3 instala solo aquellas bibliotecas que se pueden ejecutar cuando se inicia directamente a trav茅s del nodo. Y si intenta conectar el script en html y ejecutar este html en NW.js, entonces no saldr谩 nada. Google Associates ofrece solo una receta para incluir sqlite en un proyecto en nw.js, e incluso esa debe sacarse del cach茅. S铆, y ya est谩 desactualizado. Por lo tanto, pasamos un par de d铆as estudiando los problemas y buscando una soluci贸n que funcione. Pido gato.

Entonces Para empezar, la m谩quina fue construida "a partir de lo que era" e instal贸 Windows 7 x32 con el paquete .NET 4.7.1 (requerido para Visual C ++). 驴Por qu茅 32 bits? Decid铆 comenzar de a poco. Aunque, como se vio despu茅s, crear un m贸dulo para x64 no requiere ejecuci贸n en un sistema x64.

Luego se instal贸 Node.js versi贸n 10.8.0, aunque 10.9.0 ya hab铆a aparecido al final de los experimentos. Pero luego decid铆 escuchar a personas con conocimientos:



Despu茅s de pensarlo, decid铆 que estaba haciendo lo mismo para LTS, aunque no est谩 del todo claro d贸nde tienen LTS y d贸nde no. Sugiri贸 que los no LTS son versiones beta, alfa y nocturnas.

Aunque, como cualquier abandono, hizo todo a la mitad y cumpli贸 la siguiente recomendaci贸n:

Recomendaci贸n de documentaci贸n para lanzamientos de LTS
En Windows, debe reemplazar el archivo
<npm-path> \ node_modules \ node-gyp \ src \ win_delay_load_hook.cc con el que est谩 en github.com/nwjs/nw.js/blob/nw18/tools/win_delay_load_hook.cc antes de instalar m贸dulos con node-gyp o npm.

Bueno, no encontr茅 este archivo en mi computadora. Probablemente porque no instal茅 node-gyp.

Lo configuramos para el nodo (es absolutamente necesario hacerlo desde la l铆nea de comandos con derechos de administrador)

npm i -g nw-gyp

De hecho, el reemplazo de nodo-gyp
nw-gyp es un truco en node-gyp para admitir encabezados y bibliotecas espec铆ficas de NW.js.

A continuaci贸n, descargue Visual Studio Community Edition (el enlace actual se encuentra f谩cilmente en su motor de b煤squeda favorito), al momento de escribir este art铆culo es la versi贸n actual de 2017. Lo que es importante para nosotros, contiene Build Tools 2015, mientras que los m贸dulos nativos en el nodo solo se ensamblan con esta versi贸n y m谩s Fresco no es compatible. Descargue el instalador, inicie y coloque una marca de verificaci贸n en la pesta帽a "Componentes individuales" - Toolbox VC ++ 2015.3 v14.00 (v140) para PC



El SDK de Windows 8.1 agregado tambi茅n es necesario, por lo que instalamos los tres puntos. La instalaci贸n de esta forma conduce a un salto de 2.89 gigabytes de todo lo que necesita.

Vamos m谩s all谩, balanceamos una serpiente. Y la versi贸n 2.7. Instalar por defecto en C: \ Python27.
Y ahora, 隆atenci贸n! Emboscada

Por defecto, el instalador cree que no es necesario agregar una ubicaci贸n de Python a la RUTA, por lo tanto, eliminamos este malentendido en la etapa de instalaci贸n



Una emboscada similar persigue a muchos desarrolladores al construir una amplia variedad de m贸dulos para un nodo. Y todo porque la corporaci贸n a peque帽a escala tampoco considera necesario prescribir los caminos hacia sus creaciones. El github simplemente est谩 abrumado con errores de compilaci贸n debido al hecho de que despu茅s de la instalaci贸n, la ruta a las herramientas de ensamblaje no llega a la RUTA. Tambi茅n corregimos este malentendido: corregimos la variable de entorno para que permita que el ensamblaje se ejecute, si no con mucha suavidad, al menos sin errores. Esto es lo que me pas贸 (dividido en l铆neas para una mejor percepci贸n)

>echo %PATH%
C:\Python27\;
C:\Python27\Scripts;
C:\Windows\system32;
C:\Windows;
C:\Windows\System32\Wbem;
C:\Windows\System32\WindowsPowerShell\v1.0\;
C:\Program Files\nodejs\;
C:\Users\Den\AppData\Roaming\npm;
C:\Program Files\Microsoft Visual Studio\2017\Community\MSBuild\15.0\Bin;
C:\Program Files\MSBuild\Microsoft.Cpp\v4.0\v140;


Destacado en negrita es lo que necesita agregar manualmente. Naturalmente, asegur谩ndose de que existen estos caminos.

Elemento obligatorio: reiniciar .

Bueno, ahora la asamblea real. Us茅 el administrador FAR, pero nadie proh铆be el cmd de la vieja escuela

c:\
md app
cd \app
npm init
npm install sqlite3 --build-from-source --runtime=node-webkit --target_arch=ia32 --target=0.32.1 --msvs_version=2015

para x64 cambiamos --target_arch = x64.

Bueno eso es todo. Si todo se hace correctamente, el ensamblado pasa con un cierto n煤mero de mensajes como

..\src\database.cc(672): warning C4996: 'Nan::MakeCallback': deprecate [C:\app\node_modules\sqlite3\build\node_sqlite3.vcxproj]
C:\app\node_modules\nan\nan.h(929): note: . "Nan::MakeCallback"
c:\app\node_modules\nan\nan_new.h(208): warning C4244: : "sqlite3_int64" "double", ( ..\src\database.cc) [C:\app\node_modules\sqlite3\build\node_sqlite3.vcxproj]

pero al final el m贸dulo est谩 ensamblado y ubicado en
C:/app/node_modules/sqlite3/lib/binding/node-webkit-v0.32.1-win32-ia32\node_sqlite3.node

Matiz de ensamblaje: con cada ensamblaje, el recopilador elimina la carpeta node_modules / sqlite3 / lib. Por lo tanto, si es necesario ensamblar dos m贸dulos (para cada arquitectura), guarde el resultado intermedio.

Gracias por su atenci贸n, finalmente, el resultado del experimento:

M贸dulos ensamblados para NW.js 0.32.1 ia32 && x64 en Google

Source: https://habr.com/ru/post/es420413/


All Articles