JHipster从6.1.2升级到6.2.0的问题

时间:2019-09-10 02:41:02

标签: jhipster

我遇到(并解决了)重大的JHipster升级错误。我的问题很简单,但是首先要进行一些设置,然后再讲故事,所以我将把它分成几部分。

(0)开发环境
(1)升级问题
(2)调查/修复策略
(3)解决方案
(4)问题


(0)开发环境

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进行测试和生产,无需搜索。


(1)升级问题

我的代码是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非常长并且涉及。如果有人喜欢,我稍后将其添加到帖子中。但是,从本质上讲,测试失败了,并且该应用程序无法启动(仅导致错误页面:“发生了错误:-(”,后接冗长的文本提示可能出了什么问题,并提出了解决方案)。

恢复为原始代码,一切仍然有效。比较两个项目,唯一的更改是与升级相关的更改。对于失败感到惊讶,我挠了挠头,然后执行了以下操作。


(2)调查/修复策略

这时我有两个版本的项目,我将其标记为:6.1.2-working(升级之前的原始代码)和6.2.0-broken(原始代码+ Jhipster升级)。 / p>

我创建了第三个新的新项目(我将其称为6.2.0-fresh),如下所示:

  • 创建了一个新目录
  • 6.1.2-working .yo-rc.json文件和JDL文件(21points.jh)复制到其中
  • 从bash中键入:
    • jhipster
    • jhipster import-jdl 21points.jh
    • npm install ng2-nvd3 <-因为Matt Raible利用了一些图形绘制

然后我在6.1.2-working6.2.0-fresh之间进行了比较,并将功能更改从6.1.2-working迁移到6.2.0-fresh。最终,我按预期运行了新的6.2.0-fresh。从理论上讲,我可以把东西留在那里,但是:

  • 我想找到一个合适的升级解决方案,而不是一个“端口”。
  • 此方法无法保留我的版本控制历史记录。对于正常的项目,我需要保留它。

我在新的6.2.0-fresh6.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项目!


(3)解决方案

要从JHipster 6.1.2升级到6.2.0:

  • (备份/复制正在运行的项目代码...总是一个好主意)
  • 进行JHipster升级:
    • npm update -g generator-jhipster
    • jhipster upgrade
    • 查找/解决升级过程中产生的所有冲突
  • 创建一个新的临时目录
  • 将原始.yo-rc.json文件以及所有JDL文件复制到该文件中
  • 从bash的临时根目录中键入:
    • jhipster
    • jhipster import-jdl (...your JDL files...)
    • npm install (...needed modules...)
  • 确保临时项目正常工作:./gradlew integrationTest
  • 将新创建的package-lock.json文件从临时项目根目录复制/覆盖到您的工作项目根目录
  • 从工作项目的根目录中删除node_modules目录
  • 类型:npm install
  • 构建/测试/运行您的项目,并享受

现在一切正常。


(4)问题

  • 我遇到的问题很普遍吗?
  • 有人知道为什么会这样吗? JHipster升级过程有问题吗?还是,它是每个人都已经知道的JHipster升级的自然副产品(尽管JHipster网站上没有记录),而我很幸运以前没有碰到过它?
  • 我在升级中错过了什么吗?我做错什么了吗?
  • 我的解决方案合适吗?有潜在的问题吗?
  • 是否有更好的方法来解决此类升级问题?升级此类项目的“标准操作程序”?

谢谢!

1 个答案:

答案 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的特定升级中必须进行的深度错误修复的问题。