如果在 qap.config.js
中没有定义 entry
或 entry
为 {}
, qap-cli
会默认取符合 src/pages/页面名称/index.jsx
规则的所有文件作为入口,这也是我们**推荐的页面管理方式**。
如果你的页面入口不符合上述规则,又不方便调整。也可以使用自定义entry的方式定义页面入口,以下是一个伪代码demo。
webpack:{ entry:{ index:[path.resolve(process.cwd(),'src/index/index.jsx')], // **注意这里是数组且只能接受绝对路径** ndex:[path.resolve(process.cwd(),'src/detail/index.jsx')] } }
既然是在js文件中,开发者也可以自己定义方法,获得符合自己项目结构的全部页面入口。entry:getEntry()
var path = require('path'); var glob = require('glob'); var getEntry = function(globPath) { var entries = { }; glob.sync(globPath).forEach(function(entry) { var pathname = entry.split('/').splice(-2).join('/').split('.')[0]; entries[pathname] = path.resolve(process.cwd(),entry); }); return entries; };
查看是否在控制台上有报错,如果有报错的话会保留上一次成功的结果。
新项目默认使用扁平输出,即所有pages目录下的页面跳转如 src/pages/first/index.jsx
到 src/pages/second/index.jsx
,只需通过 qap:///second.js
即可完成。
执行qap package可以查看build目录下的所有页面都被输出为扁平的结构。
qap.config.js
的打包配置感觉没有作用,和上次的大包结果一样?对 external
的修改和 webpack
字段修改都会改变打包体积。如果打包体积未变化,可能是触发了happypack(4.0.0-beta2)
的强缓存bug。通过随便修改一行代码,与上次打包时的文件内容有区别即可绕过。
查看是否已经打开了包内置,内置的优先级高于按需引用。
新初始化的项目默认打开了 es6 标准语法校验,实现打包体积优化的目的。开发者可以对自己的模块进行修改以符合es6模块规范或者
修改 qap.config.js 中的 toolkitConfig.webpack[‘optimize-size’][‘webpack’]:false 关闭这一功能。
真机与 qap-cli 之间的调试链接受网络环境影响较大,请确保网络稳定。另外锁屏,退出应用也会导致调试链接断开。
在打开 remote debug 调试开关后,应用中的 js 源代码将使用浏览器内核执行,并非真机内核。需排查代码中是否使用 qap 真机环境中不支持的语法或特性。
为js 污染运行环境,qap 容器锁死了 js 原型链,一般情况下此类错误都是使用了诸如 rxjs/lodash 等对原型链做了修改的类库导致。
过程如下:
1、关闭 remote debug 开关
2、打开 inspector ,查看错误日志输出
3、根据日志定位错误代码
qap应用在调试阶段需要占用 8080 8088 3000 三个端口号,如果被占用可以选择释放掉相应的端口号。
请确认是否在项目根目录,并升级qap-cli到最新版本 cnpm install -g qap-cli
请确认 node 版本是否在5.5.0 ~ 8.0.0,推荐版本 6.11.2。由于node 8 仍处于不稳定状态,许多二方库无法使用,qap-cli 暂时无法对node 8 进行兼容。
请确认当前node版本是否在5.5.0至8.0.0区间,对于二方开发者,请通过qap switch切换环境重新尝试。
大部分更新报错都是由于网络原因导致,使用qap clear清楚cli的缓存,再次执行qap debug 即可解决。
1、确认手机和调试电脑是否在同一网络内,并且开放防火墙的8088、8080、3000端口。
2、确认qap.json中的页面首页是否指向了正确的qap协议地址。默认情况下应用首页为qap:///index.js
,当开发者有自定义的更改时,也需要跳转首页的位置。
qap.config.js
可能存在语法错误?对该js文件进行语法校验,一般情况下都是粗心导致的 : )
createElement is only a getter
?旧版rax不支持hotreload,设置qap.config,js
中的hotreload字段为false即可。