我遇到(并解决了)重大的JHipster升级错误。我的问题很简单,但是首先要进行一些设置,然后再讲故事,所以我将把它分成几部分。
(0)开发环境
(1)升级问题
(2)调查/修复策略
(3)解决方案
(4)问题
Windows 10,Gradle 5.4.1,节点10.16.3,npm 6.11.2,yarn 1.16.0,MariaDB 10.3,JDK 11,IntelliJ 2019.2.2,git 2.23.0
我的项目:整体应用程序,使用Gradle,Angular,JWT身份验证,MariaDB进行测试和生产,无需搜索。
我的代码是Matt Raible的书The JHipster Mini-Book v5.0.3中概述的21点项目。我从JHipster 6.0开始开发。整个夏天,我定期检查了代码,并应用了6.0.1到6.1.1到6.1.2的升级(在每种情况下,在解决了少数冲突之后,该项目才能编译并正常运行)。>
上周,我注意到JHipster 6.2.0的发布。我制作了6.1.2工作代码的副本/备份,更新了生成器(npm update -g generator-jhipster
),应用了升级(jhipster upgrade
),解决了冲突,然后... 失败。 stacktrace非常长并且涉及。如果有人喜欢,我稍后将其添加到帖子中。但是,从本质上讲,测试失败了,并且该应用程序无法启动(仅导致错误页面:“发生了错误:-(”,后接冗长的文本提示可能出了什么问题,并提出了解决方案)。>
恢复为原始代码,一切仍然有效。比较两个项目,唯一的更改是与升级相关的更改。对于失败感到惊讶,我挠了挠头,然后执行了以下操作。
这时我有两个版本的项目,我将其标记为:6.1.2-working
(升级之前的原始代码)和6.2.0-broken
(原始代码+ Jhipster升级)。 / p>
我创建了第三个新的新项目(我将其称为6.2.0-fresh
),如下所示:
6.1.2-working
.yo-rc.json
文件和JDL文件(21points.jh
)复制到其中jhipster
jhipster import-jdl 21points.jh
npm install ng2-nvd3
<-因为Matt Raible利用了一些图形绘制然后我在6.1.2-working
和6.2.0-fresh
之间进行了比较,并将功能更改从6.1.2-working
迁移到6.2.0-fresh
。最终,我按预期运行了新的6.2.0-fresh
。从理论上讲,我可以把东西留在那里,但是:
我在新的6.2.0-fresh
和6.2.0-broken
之间进行了比较。唯一有意义的区别是对特定文件的更改:package-lock.json
简单地:
package-lock.json
文件复制到6.2.0-broken
根目录中6.2.0-broken
node_modules
目录npm install
(用于重建node_modules
目录)我现在可以毫无问题地构建/运行6.2.0-broken
项目!
要从JHipster 6.1.2升级到6.2.0:
npm update -g generator-jhipster
jhipster upgrade
.yo-rc.json
文件以及所有JDL文件复制到该文件中jhipster
jhipster import-jdl (...your JDL files...)
npm install (...needed modules...)
./gradlew integrationTest
package-lock.json
文件从临时项目根目录复制/覆盖到您的工作项目根目录node_modules
目录npm install
现在一切正常。
谢谢!
答案 0 :(得分:2)
至少David Steiman(“ Xetys”,流主管JHipster UAA)知道用jhipster upgrade
升级jhipster生成的应用程序存在的问题,并在JHipster Conf 2019演讲中谈到了“ jhipster的阴暗面”。并在演示中提出了一个解决方案:https://www.youtube.com/watch?v=Gg5CYoBdpVo。
我尝试遵循他的建议,而不要碰触生成的类和配置-如果有人尝试连接到两个数据库并保持可升级性,这将更加有趣。
但这可能只能回答您的最后一个问题,而不是您在从6.1.2到6.2.0的特定升级中必须进行的深度错误修复的问题。