JHipster 从 6.1.2 升级到 6.2.0 的问题
Problem with JHipster Upgrade from 6.1.2 to 6.2.0
我遇到(并解决了)一个严重的 JHipster 升级错误。我的问题很简单,但首先有一些设置和背景故事,所以我将把它分成几个部分。
(0) 开发环境
(1) 升级问题
(2) Investigation/fix 策略
(3) 解
(4) 个问题
(0) 开发环境
Windows10,Gradle5.4.1,节点 10.16.3,npm 6.11.2,纱线 1.16.0,MariaDB 10.3,JDK11,IntelliJ 2019.2.2 , git 2.23.0
我的项目:单体应用,使用 Gradle、Angular、JWT 身份验证、用于测试和生产的 MariaDB,无搜索。
(1) 升级问题
我的代码是 Matt Raible 的书中概述的 21 点项目:The JHipster Mini-Book v5.0.3。我从 JHipster 6.0 开始我的开发。整个夏天,我定期审查代码,并应用升级:6.0.1 到 6.1.1 到 6.1.2(在每种情况下,在解决了一些冲突之后,项目将顺利编译 运行 ).
上周,我注意到JHipster 6.2.0 发布了。我制作了 6.1.2 工作代码的 copy/backup,更新了生成器(npm update -g generator-jhipster
),应用了升级(jhipster upgrade
),解决了冲突,并且... 失败。堆栈跟踪相当长且涉及。如果有人喜欢,我稍后会添加到post。但是,从本质上讲,测试失败了,应用程序无法启动(仅导致错误页面:"An error has occurred :-(",然后是冗长的文本,提示可能出了什么问题,并提出了修复建议)。
恢复原代码,一切正常。对两个项目进行比较,唯一的变化是与升级相关的变化。对失败感到惊讶,我挠了挠头,然后做了以下。
(2) Investigation/fix 策略
此时我的项目有两个版本,我将其标记为:6.1.2-working
(升级前的原始代码)和6.2.0-broken
(原始代码+Jhipster升级) .
我创建了第三个新项目(我将其称为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-working
和 6.2.0-fresh
之间进行了比较,并将功能更改从 6.1.2-working
迁移到 6.2.0-fresh
。最终,我按预期获得了新的 6.2.0-fresh
到 运行。理论上,我可以把东西留在那里,但是:
- 我想找到一个合适的升级解决方案,而不是 "port"。
- 此方法无法保留我的版本控制历史记录。对于一个正常的项目,我需要保留它。
我对新的 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
目录)
我现在 build/run 6.2.0-broken
项目没有问题了!
(3) 解决方案
要从 JHipster 6.1.2 升级到 6.2.0:
- (制作一个 backup/copy 您的工作项目代码...永远是个好主意)
- 进行JHipster升级:
npm update -g generator-jhipster
jhipster upgrade
- Find/resolve 升级过程产生的任何冲突
- 创建一个新的临时目录
- 将原始
.yo-rc.json
文件连同任何 JDL 文件复制到其中
- 从 bash,在临时根目录中,键入:
jhipster
jhipster import-jdl (...your JDL files...)
npm install (...needed modules...)
- 确保临时项目有效:
./gradlew integrationTest
- Copy/overwrite新创建的
package-lock.json
文件从临时项目根目录到你的工作项目根目录
- 从您的工作项目根目录中删除
node_modules
目录
- 类型:
npm install
- Build/test/run 你的项目,享受
现在一切正常。
(4) 个问题
- 我遇到的问题是否普遍?
- 有谁知道为什么会这样?这是 JHipster 升级过程的问题吗?或者,它是每个人都知道的 JHipster 升级的自然副产品(尽管在 JHipster 网站上没有记录),而我很幸运以前没有遇到过?
- 我在升级过程中遗漏了什么吗?我是不是做错了什么?
- 我的解决方案合适吗?它有潜在的问题吗?
- 有没有更好的方法来解决这样的升级问题?一个"standard operating procedure"升级这样的项目?
谢谢!
至少 David Steiman("Xetys",JHipster UAA 的 Stream Lead)知道使用 jhipster upgrade
升级 jhipster 生成的应用程序的问题,他在 JHipster 的演讲中谈到 "the dark side of jhipster" Conf 2019 并在演示中展示了一个解决方案:https://www.youtube.com/watch?v=Gg5CYoBdpVo.
我尽量听从他的建议,不去碰生成的 类 和配置——这更有趣,如果有人试图连接到两个数据库并保持可升级。
但这可能只能回答你的最后一个问题,而不是你在从 6.1.2 到 6.2.0 的这次特定升级中必须做的深入错误修复的问题。
我遇到(并解决了)一个严重的 JHipster 升级错误。我的问题很简单,但首先有一些设置和背景故事,所以我将把它分成几个部分。
(0) 开发环境
(1) 升级问题
(2) Investigation/fix 策略
(3) 解
(4) 个问题
(0) 开发环境
Windows10,Gradle5.4.1,节点 10.16.3,npm 6.11.2,纱线 1.16.0,MariaDB 10.3,JDK11,IntelliJ 2019.2.2 , git 2.23.0
我的项目:单体应用,使用 Gradle、Angular、JWT 身份验证、用于测试和生产的 MariaDB,无搜索。
(1) 升级问题
我的代码是 Matt Raible 的书中概述的 21 点项目:The JHipster Mini-Book v5.0.3。我从 JHipster 6.0 开始我的开发。整个夏天,我定期审查代码,并应用升级:6.0.1 到 6.1.1 到 6.1.2(在每种情况下,在解决了一些冲突之后,项目将顺利编译 运行 ).
上周,我注意到JHipster 6.2.0 发布了。我制作了 6.1.2 工作代码的 copy/backup,更新了生成器(npm update -g generator-jhipster
),应用了升级(jhipster upgrade
),解决了冲突,并且... 失败。堆栈跟踪相当长且涉及。如果有人喜欢,我稍后会添加到post。但是,从本质上讲,测试失败了,应用程序无法启动(仅导致错误页面:"An error has occurred :-(",然后是冗长的文本,提示可能出了什么问题,并提出了修复建议)。
恢复原代码,一切正常。对两个项目进行比较,唯一的变化是与升级相关的变化。对失败感到惊讶,我挠了挠头,然后做了以下。
(2) Investigation/fix 策略
此时我的项目有两个版本,我将其标记为:6.1.2-working
(升级前的原始代码)和6.2.0-broken
(原始代码+Jhipster升级) .
我创建了第三个新项目(我将其称为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-working
和 6.2.0-fresh
之间进行了比较,并将功能更改从 6.1.2-working
迁移到 6.2.0-fresh
。最终,我按预期获得了新的 6.2.0-fresh
到 运行。理论上,我可以把东西留在那里,但是:
- 我想找到一个合适的升级解决方案,而不是 "port"。
- 此方法无法保留我的版本控制历史记录。对于一个正常的项目,我需要保留它。
我对新的 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
目录)
我现在 build/run 6.2.0-broken
项目没有问题了!
(3) 解决方案
要从 JHipster 6.1.2 升级到 6.2.0:
- (制作一个 backup/copy 您的工作项目代码...永远是个好主意)
- 进行JHipster升级:
npm update -g generator-jhipster
jhipster upgrade
- Find/resolve 升级过程产生的任何冲突
- 创建一个新的临时目录
- 将原始
.yo-rc.json
文件连同任何 JDL 文件复制到其中 - 从 bash,在临时根目录中,键入:
jhipster
jhipster import-jdl (...your JDL files...)
npm install (...needed modules...)
- 确保临时项目有效:
./gradlew integrationTest
- Copy/overwrite新创建的
package-lock.json
文件从临时项目根目录到你的工作项目根目录 - 从您的工作项目根目录中删除
node_modules
目录 - 类型:
npm install
- Build/test/run 你的项目,享受
现在一切正常。
(4) 个问题
- 我遇到的问题是否普遍?
- 有谁知道为什么会这样?这是 JHipster 升级过程的问题吗?或者,它是每个人都知道的 JHipster 升级的自然副产品(尽管在 JHipster 网站上没有记录),而我很幸运以前没有遇到过?
- 我在升级过程中遗漏了什么吗?我是不是做错了什么?
- 我的解决方案合适吗?它有潜在的问题吗?
- 有没有更好的方法来解决这样的升级问题?一个"standard operating procedure"升级这样的项目?
谢谢!
至少 David Steiman("Xetys",JHipster UAA 的 Stream Lead)知道使用 jhipster upgrade
升级 jhipster 生成的应用程序的问题,他在 JHipster 的演讲中谈到 "the dark side of jhipster" Conf 2019 并在演示中展示了一个解决方案:https://www.youtube.com/watch?v=Gg5CYoBdpVo.
我尽量听从他的建议,不去碰生成的 类 和配置——这更有趣,如果有人试图连接到两个数据库并保持可升级。
但这可能只能回答你的最后一个问题,而不是你在从 6.1.2 到 6.2.0 的这次特定升级中必须做的深入错误修复的问题。