SQLite e NW.js - instruções passo a passo para criar amizades fortes

Olá, Habr e seus habitantes! Eu queria esculpir algo em HTML e JS para que fosse desktop e conveniente. O que é necessário para isso? Certo. Node.js e NW.js ou Electron. Olhando para as fracas tentativas do NW vs Electron holivar e lendo a documentação de ambos, foi tomada a decisão de começar a sentir o NW.js.

Mas aqui está uma emboscada. A execução do npm i sqlite3 instala apenas as bibliotecas que podem ser executadas quando ativadas diretamente através do nó. E se você tentar conectar o script em html e executar esse html em NW.js, nada resultará disso. Os associados do Google fornecem apenas uma receita para incluir o sqlite em um projeto no nw.js, e mesmo essa deve ser retirada do cache. Sim, e ele já está desatualizado. Portanto, foram gastos alguns dias estudando os problemas e encontrando uma solução funcional. Eu peço gato.

Então Para começar, a máquina foi criada "do que era" e instalou o Windows 7 x32 com o pacote .NET 4.7.1 (necessário para o Visual C ++). Por que 32 bits? Eu decidi começar pequeno. Embora, como se viu, a criação de um módulo para x64 não exija execução em um sistema x64.

Em seguida, o Node.js. versão 10.8.0 foi instalado, embora o 10.9.0 já tivesse aparecido no final dos experimentos. Mas então eu decidi ouvir pessoas conhecedoras:



Depois de refletir sobre isso, decidi que estava fazendo o mesmo para o LTS, embora não esteja totalmente claro onde todos eles têm e onde não. Ele sugeriu que os não-LTS são versões beta, alfa e noturnas.

Embora, como qualquer desistente, tenha feito tudo pela metade e a seguinte recomendação seja cumprida:

Recomendação da documentação para lançamentos LTS
No Windows, você precisa substituir o arquivo
<npm-path> \ node_modules \ node-gyp \ src \ win_delay_load_hook.cc com o do github.com/nwjs/nw.js/blob/nw18/tools/win_delay_load_hook.cc antes de instalar os módulos com node-gyp ou npm.

Bem, não encontrei este arquivo no meu computador. Provavelmente porque não instalei o node-gyp.

Nós o configuramos para o nó (é absolutamente necessário fazê-lo na linha de comando com direitos de administrador)

npm i -g nw-gyp

De fato, o node-gyp de substituição
O nw-gyp é um hack no node-gyp para oferecer suporte a bibliotecas e cabeçalhos específicos do NW.js.

Próximo - faça o download do Visual Studio Community Edition (o link atual é facilmente localizado em seu mecanismo de pesquisa favorito) - no momento da redação deste artigo, é a versão atual de 2017. O que é importante para nós - ele contém o Build Tools 2015 - enquanto os módulos nativos no nó são montados apenas com esta versão e mais fresco não suporta. Faça o download do instalador, inicie e coloque uma marca de seleção na guia "Componentes individuais" - Toolbox VC ++ 2015.3 v14.00 (v140) para PC



O SDK do Windows 8.1 adicionado também é necessário, por isso instalamos os três pontos. A instalação neste formulário leva a um salto de 2,89 gigabytes de tudo o que você precisa.

Vamos mais longe - balançamos uma cobra. E versão 2.7. Instale por padrão em C: \ Python27.
E agora - atenção! Emboscada.

Por padrão, o instalador acredita que não é necessário adicionar um local python ao PATH; portanto, eliminamos esse mal-entendido no estágio de instalação



Uma emboscada semelhante assombra muitos desenvolvedores ao criar uma grande variedade de módulos para um nó. E tudo porque a pequena empresa também não considera necessário prescrever os caminhos para suas criações. O github é simplesmente sobrecarregado com erros de compilação devido ao fato de que, após a instalação, o caminho para as ferramentas de montagem não entra no PATH. Também corrigimos esse mal-entendido - corrigimos a variável de ambiente para permitir que a montagem ocorra se não for muito suave, pelo menos sem erros. Aqui está o que aconteceu comigo (dividido em linhas para melhor percepção)

>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 em negrito é o que você precisa adicionar manualmente. Naturalmente, certificando-se de que esses caminhos existam.

Item obrigatório - reinicialização .

Bem, agora a montagem real. Eu usei o gerente FAR, mas ninguém proíbe o cmd da velha escola

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, alteramos --target_arch = x64.

Bem, isso é tudo. Se tudo for feito corretamente, a montagem passará com um certo número de mensagens 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]

mas no final o módulo é montado e localizado em
C:/app/node_modules/sqlite3/lib/binding/node-webkit-v0.32.1-win32-ia32\node_sqlite3.node

Nuances da montagem - com cada montagem, a pasta node_modules / sqlite3 / lib é excluída pelo coletor. Portanto, se houver necessidade de montar dois módulos (para cada arquitetura), salve o resultado intermediário.

Obrigado por sua atenção, finalmente, o resultado do experimento:

Módulos montados para NW.js 0.32.1 ia32 && x64 no Google

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


All Articles