您好,哈伯及其居民! 我想用HTML和JS雕刻一些东西,以便桌面和方便。 为此需要什么? 对啊 Node.js和NW.js或Electron。 通过查看NW vs Electron holivar的弱尝试并阅读两者的文档,我们决定开始感觉NW.js。
但这是伏击。 运行
npm i sqlite3
仅安装那些通过节点直接启动时可以执行的库。 而且,如果您尝试使用html连接脚本并在NW.js中运行该html,那么将一无所获。 Google员工只给出了在nw.js的项目中包含sqlite的一种方法,甚至必须将其从缓存中取出。 是的,他已经过时了。 因此,花了几天时间研究问题并找到可行的解决方案。 我要猫。
这样啊 首先,该计算机是“按原样”构建的,并安装了Windows 7 x32和.NET软件包4.7.1(Visual C ++必需)。 为什么是32位? 我决定从小做起。 尽管事实证明,为x64创建模块不需要在x64系统上执行。
然后安装了Node.js版本10.8.0,尽管在实验结束时已经出现了10.9.0。 但是后来我决定听听有学问的人:

经过深思熟虑之后,我决定对LTS进行相同的操作,尽管尚不清楚他们中的哪些人都有LTS,在哪里没有。 他建议非LTS是beta,alpha和每夜构建。
尽管像任何辍学一样,一切都完成了一半,但以下建议得以实现:
LTS版本的文档建议在Windows上,您需要替换文件
<npm-path> \ node_modules \ node-gyp \ src \ win_delay_load_hook.cc和github.com/nwjs/nw.js/blob/nw18/tools/win_delay_load_hook.cc中的一个,
然后再安装带有node-
gyp或npm的模块。
好吧,我在计算机上找不到此文件。 可能是因为我没有安装node-gyp。
我们为节点设置它(绝对有必要使用管理员权限从命令行执行此操作)
npm i -g nw-gyp
实际上,替换node-gypnw-gyp是对node-gyp的一种破解,可支持特定于NW.js的标头和库。
下一步-下载Visual Studio Community Edition(当前链接可轻松找到您喜欢的搜索引擎中的链接)-在撰写本文时,当前版本为2017。对我们而言重要的是-它包含Build Tools 2015-而节点中的本机模块仅与此版本组装在一起。新鲜不支持。 下载安装程序,启动并在选项卡“单个组件”中放置一个复选标记
-PC版工具箱VC ++ 2015.3 v14.00(v140)
添加的Windows 8.1 SDK也是必需的,因此我们安装了所有三个点。 以这种形式进行安装将使您所需的一切都增加2.89 GB。
我们走得更远-摆蛇。 和2.7版。 默认安装在C:\ Python27中。
现在-
注意! 埋伏默认情况下,安装程序认为没有必要向PATH添加python位置,因此,我们在安装阶段消除了这种误解

在为节点构建各种模块时,许多开发人员都会陷入类似的伏击中。 一切都是因为小型公司也认为没有必要规定其创建的路径。 由于安装后,组装工具的路径未进入PATH,因此github简直不知所要出现了构建错误。 我们还纠正了这种误解-我们纠正了环境变量,以便它可以使装配顺利运行,至少没有错误。 这是我发生的事情(为了更好地理解,分成几行)
>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;
粗体突出显示的是您需要手动添加的内容。 自然,请确保存在这些路径。
强制项-
重新启动 。
好,现在是实际的组装。 我使用了FAR经理,但没有人禁止老式cmd
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
对于x64,我们更改--target_arch = x64。
好,仅此而已。 如果一切都正确完成,则程序集将传递一定数量的消息,例如
..\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]
但最后,模块已组装并位于
C:/app/node_modules/sqlite3/lib/binding/node-webkit-v0.32.1-win32-ia32\node_sqlite3.node
程序集细微差别-对于每个程序集,收集器将删除node_modules / sqlite3 / lib文件夹。 因此,如果需要组装两个模块(针对每个体系结构),请保存中间结果。
最后,感谢您的关注,实验结果:
Google上NW.js 0.32.1 ia32 && x64的组装模块