qt中js代码因qmlquick编译失败问题
问题现象
某次在使用从github拉下来的qt项目进行编译时,发现使用Debug编译可以运行,但使用Release编译则发生了如下错误
qmlcachegen.exe
Error compiling js file: ..\xx.js:10:1: error: Unexpected token `%'
mingw32-make[1]: *** [Makefile.Release:833: release/xx_js.cpp] Error 1
解决办法
根据错误内容查找了一些资料,终于找到了原因
这里Release和Debug的区别是Release自动启用Qt快速编译器的使用。通过预处理资源中的所有.qml和.js文件,此工具可加快将QML和JS文件加载到Qml引擎的速度。但是实际上我们不想将这个js文件加载到QML引擎中,而是加载到Qt WebEngine中,因此导致了错误
解决办法很简单,就是就是在编译构建取消掉Enable Qt Quick Compiler。
当然,这个办法产生的配置文件不适合上传的git工程上,因此还有更好的的办法就是在项目的pro文件里增加一行
CONFIG -= qtquickcompiler
参考资料
https://bugreports.qt.io/browse/QTBUG-72583?attachmentViewMode=list