Nativefier将web页面打包为桌面应用中出现的问题记录
node.js的安装
直接官网下载,最好不要安装在C盘一直下一步安装好就行了,没什么特殊的地方
地址:http://nodejs.cn/download/
安装好以后进入cmd验证一下:
node -v
npm -v
npm其他的配置就省略了,可以自己百度,都很详细,主要说一下Nativefier的打包过程
用npm安装Nativefier
npm install nativefier -g
安装的时候可能会报一个警告: 类似core-js@2.X < core-js@3.X
不过不影响使用,只要安装完成就行了:
简单的使用Nativefier
nativefier "www.baidu.com"
执行这一步以后就开始打包当前的网址了,问题就来了。。。
Downloading tmp-3817-0-electron-v5.0.10-win-x64.zip
Error: getaddrinfo ENOTFOUND github-production-release-asset-2e65be.s3.amazonaws.com github-production-release-asset-2e65be.s3.amazonaws.com:443
{ Error: getaddrinfo ENOTFOUND github-production-release-asset-2e65be.s3.amazonaws.com github-production-release-asset-2e65be.s3.amazonaws.com:443
at GetAddrInfoReqWrap.onlookup [as oncomplete] (dns.js:57:26)
errno: 'ENOTFOUND',
code: 'ENOTFOUND',
syscall: 'getaddrinfo',
hostname: 'github-production-release-asset-2e65be.s3.amazonaws.com',
host: 'github-production-release-asset-2e65be.s3.amazonaws.com',
port: 443 }
packaging [======================================== ] 79%
执行到79%就报错了,因为在Nativefier运行之前,他需要下载一个electron-5.X-win32-64类似的zip文件,地址是:
http://github-production-release-asset-2e65be.s3.amazonaws.com
结果是这个是外网的地址,国内不能直接连,所以下载打包工具失败,直接到79%就结束了,百度了很多地方都没有人提到这个问题,也不知道大家都是怎么弄得,反正我真的是怎么试都不行啊,太难了
两种解决办法
- 第一种方法,修改本地的hosts文件,这个文件位置一般不会改变
windows系统:C:\Windows\System32\drivers\etc 在hosts文件最下面加一行:
52.216.204.187 github-production-release-asset-2e65be.s3.amazonaws.com
如果这个ip的地址很慢,也可以试一试其他的ip不过速度基本都很慢,在20K左右,而且容易断线,一旦断掉就得重新下载,一个58M的文件,可以下载到你崩溃,真的,运气好的就能下载下来,这个文件只需要下载一次就行了:
https://site.ip138.com/github-production-release-asset-2e65be.s3.amazonaws.com/
2.第二种方法,既然是外网的,只能咳咳,
反正自己找个梯子把东西下载下来就行了
还有个问题
说是全局安装的 npm install nativefier -g这样子,实际上直接在cmd用不了,也不是很懂,就去node的安装目录下调用这个nativefier,我的在E盘,先进入npm的目录:
1. 执行这个: nativefier –name "baidu" "https://www.baidu.cn/"
2. 英文的引号,底下的是以前执行的,不要在意这么多细节,,还有就是不能用中文当名字,不然会变成默认的名字
"APP"
看到这里不要怀疑,没错,已经打包完成了,具体为啥显示个61%什么的,我也不是很清楚。
打包的文件就在你执行 nativefier –name “baidu” “https://www.baidu.cn/”
这个命令的目录下:
比如我是在E:\nodejs\node_global\node_modules\npm这里执行的,文件就再这个目录下
最后再来个详细的配置吧
nativefier –name “blog” “https://www.leixuesong.cn/”
nativefier –icon <path>:设置图标
icon参数
Windows环境下为.ico文件
Linux下为.png
Mac下 icon参数可以是a .icns或.png文件
--app-copyright :应用的版权信息
-p, --platform <value>:指定输出不同系统的应用,可选参数linux、windows、osx。
-m, –show-menu-bar:指定是否应该显示菜单栏。
--disable-context-menu:禁用上下文菜单
--disable-dev-tools:停用Chrome开发者工具
--clear-cache:防止应用程序在两次启动之间保留缓存。
--tray:托盘,防止用户点击右上角关闭按钮后直接关闭程序,而是缩小到右下角的托盘中。
--always-on-top:总是在最前面显示。
--maximize:开始的时候最大化。
--full-screen:使打包的应用全屏启动。
--app-version <value>:应用程序的发行版本。
–width <value>:打包应用程序的宽度,默认为1280px。
–height <value>:打包应用程序的高度,默认为800px。
–min-width <value>:打包应用程序的最小宽度,默认为0。
–min-height <value>:打包应用程序的最小高度,默认为0。
–max-width <value>:打包应用程序的最大宽度,默认为无限制。
–max-height <value>:打包应用程序的最大高度,默认为无限制。
–x <value>:打包的应用程序窗口的X位置。
–y <value>:打包的应用程序窗口的Y位置。
-a, --arch <value> 处理器架构
示例:
nativefier
--arch "x64"
--platform "windows"
--icon D:\temp\favicon.ico //一定要有图片,不然会报错
--name "weixin"
"https://mp.weixin.qq.com/" //网站地址
--maximize //开始最大化
--always-on-top //最前端显示
--clear-cache //防止缓存
--app-copyright "在这里填自己的就行了,也没找到在哪里显示"
--app-version 1 //这里好像只能填数字,不过也没啥用,没找到在哪里显示
--show-menu-bar //英文的,感觉没啥用,还挺丑
--disable-dev-tools
--tray //比较有用的
D:\temp\ //最后指定文件的输出目录
//还有就是不能按上面的这样子,因为cmd不能换行执行一句,会出错...
nativefier --arch "x64" --platform "windows" --icon D:\temp\favicon.ico --name "weixin" "https://mp.weixin.qq.com/" --maximize --app-copyright "微信公众号" --app-version 1 --show-menu-bar --disable-dev-tools --tray D:\temp\
大概就是这样子额,没办法刚做好的web项目客户又要求是本地桌面应用程序打开,不能用浏览器,我丢你老Emmmmm