SQLite dan NW.js - petunjuk langkah demi langkah untuk menciptakan persahabatan yang kuat

Halo, Habr dan penghuninya! Saya ingin memahat sesuatu dalam HTML dan JS sehingga desktop dan nyaman. Apa yang dibutuhkan untuk ini? Benar Node.js dan NW.js atau Electron. Melihat upaya lemah dari NW vs Electron holivar dan membaca dokumentasi keduanya, keputusan dibuat untuk mulai merasa NW.js.

Tapi ini penyergapan. Menjalankan npm i sqlite3 hanya menginstal pustaka yang dapat dieksekusi ketika diluncurkan langsung melalui node. Dan jika Anda mencoba untuk menghubungkan skrip dalam html dan menjalankan html ini di NW.js, maka tidak ada yang datang darinya. Rekan Google hanya memberikan satu resep untuk menyertakan sqlite dalam proyek di nw.js, dan bahkan itu pun harus ditarik keluar dari cache. Ya, dan dia sudah usang. Oleh karena itu, beberapa hari dihabiskan untuk mempelajari masalah dan mencari solusi yang berfungsi. Saya minta kucing.

Jadi Untuk mulai dengan, mesin dibangun "dari apa itu" dan menginstal Windows 7 x32 dengan paket .NET 4.7.1 (diperlukan untuk Visual C ++). Kenapa 32 bit? Saya memutuskan untuk memulai dari yang kecil. Meskipun, ternyata, membuat modul untuk x64 tidak memerlukan eksekusi pada sistem x64.

Kemudian Node.js versi 10.8.0 dipasang, meskipun 10.9.0 sudah muncul di akhir percobaan. Tetapi kemudian saya memutuskan untuk mendengarkan orang-orang berpengetahuan:



Setelah memikirkannya lagi, saya memutuskan bahwa saya melakukan semua hal yang sama untuk LTS, meskipun tidak sepenuhnya jelas di mana mereka semua memiliki LTS dan di mana tidak. Dia menyarankan bahwa non-LTS adalah beta, alpha dan build malam.

Meskipun, seperti semua dropout melakukan semuanya menjadi dua dan rekomendasi berikut terpenuhi:

Rekomendasi Dokumentasi untuk rilis LTS
Di Windows, Anda perlu mengganti file
<npm-path> \ node_modules \ node-gyp \ src \ win_delay_load_hook.cc dengan yang ada di github.com/nwjs/nw.js/blob/nw18/tools/win_delay_load_hook.cc sebelum menginstal modul dengan node-gyp atau npm.

Yah, saya tidak menemukan file ini di komputer saya. Mungkin karena saya tidak menginstal node-gyp.

Kami mengaturnya untuk node (itu benar-benar perlu untuk melakukannya dari baris perintah dengan hak administrator)

npm i -g nw-gyp

Bahkan, penggantian node-gyp
nw-gyp adalah hack pada node-gyp untuk mendukung header dan pustaka khusus NW.js.

Berikutnya - unduh Visual Studio Community Edition (tautan saat ini mudah ditemukan di mesin pencari favorit Anda) - pada saat penulisan artikel ini adalah versi terbaru dari 2017. Yang penting bagi kami - berisi Build Tools 2015 - sementara modul asli di simpul hanya dirakit dengan versi ini dan lebih banyak lagi segar tidak mendukung. Unduh penginstal, luncurkan, dan letakkan satu tanda centang di tab "Komponen individual" - Toolbox VC ++ 2015.3 v14.00 (v140) untuk PC



Windows 8.1 SDK tambahan juga diperlukan, jadi kami memasang ketiga poin ini. Instalasi dalam bentuk ini mengarah pada lompatan 2,89 gigabita dari semua yang Anda butuhkan.

Kami melangkah lebih jauh - kami mengayunkan seekor ular. Dan versi 2.7. Instal secara default di C: \ Python27.
Dan sekarang - perhatian! Amburadul.

Secara default, penginstal percaya bahwa tidak perlu menambahkan lokasi python ke PATH, oleh karena itu, kami menghilangkan kesalahpahaman ini pada tahap instalasi



Penyergapan serupa menghantui banyak pengembang ketika membangun berbagai modul untuk sebuah node. Dan semua karena perusahaan skala kecil juga tidak menganggap perlu untuk meresepkan jalur untuk ciptaannya. Github hanya kewalahan dengan membangun kesalahan karena fakta bahwa setelah instalasi, jalur ke alat perakitan tidak masuk ke PATH. Kami juga memperbaiki kesalahpahaman ini - kami memperbaiki variabel lingkungan sehingga memungkinkan perakitan untuk pergi jika tidak sangat lancar, maka setidaknya tanpa kesalahan. Inilah yang terjadi pada saya (dibagi menjadi beberapa baris untuk persepsi yang lebih baik)

>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;


Disorot dalam huruf tebal adalah apa yang perlu Anda tambahkan secara manual. Secara alami, memastikan bahwa jalur ini ada.

Item wajib - reboot .

Nah, sekarang perakitan yang sebenarnya. Saya menggunakan manajer FAR, tetapi tidak ada yang melarang cmd sekolah lama

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

untuk x64 kita ubah --target_arch = x64.

Yah, itu saja. Jika semuanya dilakukan dengan benar, maka majelis lulus dengan sejumlah pesan seperti

..\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]

tetapi pada akhirnya modul tersebut dirakit dan terletak di
C:/app/node_modules/sqlite3/lib/binding/node-webkit-v0.32.1-win32-ia32\node_sqlite3.node

Nuansa perakitan - dengan setiap perakitan, folder node_modules / sqlite3 / lib dihapus oleh kolektor. Oleh karena itu, jika ada kebutuhan untuk merakit dua modul (untuk setiap arsitektur), simpan hasil antara.

Terima kasih atas perhatian Anda, akhirnya, hasil percobaan:

Modul rakitan untuk NW.js 0.32.1 ia32 && x64 di Google

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


All Articles