nw-builder构建win64版NWJS应用仅显示默认启动页不加载代码
NW.js构建后仅显示默认启动页问题排查
从提供的构建日志、目录结构和配置看,问题由三个明确的错误导致:
- 构建产物目录取错
构建日志明确标注win64平台产物输出路径为/Users/kevin/ReolinkNWJS/dist/ReolinkNWJS/win64,但你查看文件列表时执行的是ls dist/ReolinkNWJS/win32,如果拷贝到Windows设备的是win32目录内容,本身就不是本次win64构建的正确输出,自然不包含业务代码。 - 构建工具与NW.js内核版本不兼容,业务源码未被打包
你安装的nw-builder@3.7.0是适配NW.js 0.12~0.40旧版本的构建工具,但构建过程自动拉取了v0.65.0版本的NW.js内核,3.x版本的nw-builder对0.60+版本的NW.js打包逻辑不兼容,不会将项目源码(html、javascript、styles、package.json等核心文件)打包到产物目录中。你列出的构建文件全是NW.js原生运行时文件,没有任何自定义业务文件,运行时找不到main字段指定的html/main.html入口,就会自动回退到默认启动页。 - 本地依赖版本与构建版本不匹配
devDependencies中声明的nw@^0.12.0是2015年发布的远古版本,和构建用的v0.65.0间隔50+大版本,配置规则、打包逻辑存在大量不兼容变更,进一步导致构建流程异常。
修复方案
按以下顺序操作即可解决:
- 清理旧的构建产物和依赖:删除项目下的
node_modules、dist目录,执行npm uninstall nw nw-builder移除不匹配的依赖包 - 安装版本适配的依赖:nw-builder 4.x及以上版本才支持0.60+版本的NW.js,执行命令固定版本安装:
npm install --save-dev nw@0.65.0 nw-builder@^4.2.3 - 修改package.json中的构建脚本,4.x版本nw-builder的输出目录参数和旧版不同,将prod脚本替换为:
"scripts": { "prod": "nwbuild --platforms win64 --outDir dist/ ./" }
- 重新执行
npm run prod构建,完成后进入dist/ReolinkNWJS/win64目录检查,确认能看到项目中的html、javascript、styles等业务文件夹以及根目录package.json后,再将整个win64目录拷贝到Windows设备运行即可。
额外注意:当前package.json中icon字段配置的是Mac平台专用的
.icns格式图标,Windows平台需要替换为.ico格式的图标路径,否则生成的exe会显示NW.js默认图标。
内容的提问来源于stack exchange,提问作者KevinHJ
相关产品推荐
相关产品推荐

