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 LTSDi 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-gypnw-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