jhipster / jhipster-kotlin

Kotlin based JHipster
https://khipster.dev
Apache License 2.0
449 stars 95 forks source link

khipster upgrade fails #286

Closed matze42 closed 2 years ago

matze42 commented 3 years ago

Overview of the issue

Upgrading a khipster application using 'khipster upgrade' fails. I get the following error: .... Looking for latest generator-jhipster-kotlin version... 1.12.1 ERROR! Invalid Version: undefined ....

Motivation for or Use Case

Like to upgrade my bigger khipster application to 1.12.1. Unfortunately I have many problems getting that done. To investigate the basics I wanted to check if a newly generated khipster app can be upgraded without errors.

Reproduce the error

npm install -g generator-jhipster-kotlin mkdir test cd test git init khipster ... Answer the questions (see below for .yo-rc.json) basically keep defaults; only changes: grades and react .. git add . git commit -am "initial creation"

khipster upgrade

This results in INFO! Using JHipster version installed globally INFO! No custom sharedOptions found within blueprint: generator-jhipster-kotlin at /Users/user/Development/upgrade/test/node_modules/generator-jhipster-kotlin INFO! No custom commands found within blueprint: generator-jhipster-kotlin at /Users/user/Development/upgrade/test/node_modules/generator-jhipster-kotlin Welcome to the JHipster Upgrade Sub-Generator This will upgrade your current application codebase to the latest JHipster version ✔ Checking for new blueprint versions Looking for latest generator-jhipster-kotlin version... 1.12.1 ERROR! Invalid Version: undefined TypeError: Invalid Version: undefined at new SemVer (/Users/user/.nvm/versions/node/v14.17.0/lib/node_modules/generator-jhipster-kotlin/node_modules/generator-jhipster/node_modules/semver/classes/semver.js:19:13) at compare (/Users/user/.nvm/versions/node/v14.17.0/lib/node_modules/generator-jhipster-kotlin/node_modules/generator-jhipster/node_modules/semver/functions/compare.js:3:3) at Object.lt (/Users/user/.nvm/versions/node/v14.17.0/lib/node_modules/generator-jhipster-kotlin/node_modules/generator-jhipster/node_modules/semver/functions/lt.js:2:29) at /Users/user/.nvm/versions/node/v14.17.0/lib/node_modules/generator-jhipster-kotlin/node_modules/generator-jhipster/generators/upgrade/index.js:263:28 at new Promise () at /Users/user/.nvm/versions/node/v14.17.0/lib/node_modules/generator-jhipster-kotlin/node_modules/generator-jhipster/generators/upgrade/index.js:260:22 at Array.map () at module.exports.checkLatestBlueprintVersions (/Users/user/.nvm/versions/node/v14.17.0/lib/node_modules/generator-jhipster-kotlin/node_modules/generator-jhipster/generators/upgrade/index.js:259:14) at Object. (/Users/user/.nvm/versions/node/v14.17.0/lib/node_modules/generator-jhipster-kotlin/node_modules/yeoman-generator/lib/index.js:1009:25)

Related issues

Link to PR (if any)

KHipster Version(s)

1.12.1

.yo-rc.json { "generator-jhipster": { "blueprints": [ { "name": "generator-jhipster-kotlin", "version": "1.12.1" } ], "otherModules": [ { "name": "generator-jhipster-kotlin", "version": "1.12.1" } ], "applicationType": "monolith", "baseName": "test", "jhipsterVersion": "7.0.1", "skipClient": false, "skipServer": false, "skipUserManagement": false, "skipCheckLengthOfIdentifier": false, "skipFakeData": false, "jhiPrefix": "jhi", "entitySuffix": "", "dtoSuffix": "DTO", "testFrameworks": [], "pages": [], "creationTimestamp": 1624602504902, "serviceDiscoveryType": false, "reactive": false, "authenticationType": "jwt", "packageName": "com.mycompany.myapp", "serverPort": "8080", "cacheProvider": "ehcache", "enableHibernateCache": true, "databaseType": "sql", "devDatabaseType": "h2Disk", "prodDatabaseType": "postgresql", "buildTool": "gradle", "serverSideOptions": [], "websocket": false, "searchEngine": false, "messageBroker": false, "enableSwaggerCodegen": false, "clientFramework": "react", "withAdminUi": true, "clientTheme": "none", "enableTranslation": true, "nativeLanguage": "en", "packageFolder": "com/mycompany/myapp", "jwtSecretKey": "YTEwMzFlZGM3NDA0ZTNlOWM0OWI2ZmY3MmUwZjdhNDYyN2RkYmUyZWM2YWEzZTZkOGUyNWVmYTdkN2RhYTIxNDk4YmY0YzdiM2Y0MzU0MWRmYTM4NzJjYTA3NmY1ODkxYWJjMDE5ZTViZDVjMDZiODJlYTFjMGU3MzIwZWFjZTY=", "clientPackageManager": "npm", "clientThemeVariant": "", "languages": ["en"] } }

matze42 commented 3 years ago

my versions: node: v14.17.0 java: openjdk 14.0.2 kotlin: 1.5.20-release-287

iamahern commented 3 years ago

The error message is unhelpful. We hit this recently too, I think you are picking up a globally installed jhipster 7.1 package which is incompatible with the current jhipster-kotlin.

We were able to work around the issue by instead using the ‘khipster’ cli which seems to use a local jhipster 7.0.1 install.

sendilkumarn commented 3 years ago

I am not sure whether the upgrade sub-command will properly work for blueprints. @mshima any thoughts on the upgrade command?

mshima commented 3 years ago

It was supposed to work. You may be luckier with jhipster upgrade and select the jhipster target version (same last kotlin depends on).

From the log I guess that the current kotlin blueprint version is not available due to how kotlin cli is implemented. (passes blueprints option without a version)

sendilkumarn commented 3 years ago

Thanks for the update @mshima Do you think just passing version would work here?

mshima commented 3 years ago

It's been a while that I don't see upgrade internals. But I think the problem is that passing jhipster --blueprints kotlin may be overriding the version from .yo-rc.json. It actually can be a bug at jhipster side.

If jhipster --blueprints kotlin@foo works it will override the blueprint current version. IMO you should omit --blueprints option from upgrade.

matze42 commented 3 years ago

Thanks for looking into this. If there is anything I can do to support/help e.g. by providing more info or trying something out, please let me know. FYI: As the upgrade did not work for me in the past I resorted to use: jhipster upgrade --target-blueprint-versions kotlin@1.12.1 with the respective target version. I've never been sure if this was creating any problems. Perhaps that's why I am I today's situation...

matze42 commented 3 years ago

The error message is unhelpful. We hit this recently too, I think you are picking up a globally installed jhipster 7.1 package which is incompatible with the current jhipster-kotlin.

We were able to work around the issue by instead using the ‘khipster’ cli which seems to use a local jhipster 7.0.1 install.

@iamahern: Can I ask what you mean by using the khipster cli. I tried to upgrade by "khipster upgrade". Thought that is using the khipster cli :-).

I also uninstalled any locally installed versions of jhipster and khipster before starting the sequence under "reproduce the error....". So if you could give me a hint what I can try to do in order to follow your work around, I would be really happy.

sendilkumarn commented 3 years ago

Thanks for the update @matze42

@mshima Indeed it looks like a main generator error. I will create a ticket in main generator along with the PR.

Meanwhile @matze42 this command jhipster upgrade --target-blueprint-versions kotlin@1.12.1 should work without any issues. Please do let me know if it causes problem. Thanks :)

matze42 commented 3 years ago

@sendilkumarn Unfortunately this is also not working. The behavior depends on having installed generator-jhipster-kotlin globally or not.

With only having generator-jhipster installed globally ( generator-jhipster-kotlin not installed) the upgrade fails because "devServerPort" is not defined


WARNING! Java 8, 11, or 12 are not found on your computer. Your Java version is: 14.0.2


JHipster update available: 7.1.0 (current: 7.0.1)

Run npm install -g generator-jhipster to update.


 info Using blueprint generator-jhipster-kotlin for server subgenerator

WARNING! Priority composing is missing for generator jhipster-kotlin:server. Merging into default priority. WARNING! Priority loading is missing for generator jhipster-kotlin:server. Merging into default priority. WARNING! Priority preparing is missing for generator jhipster-kotlin:server. Merging into default priority. This is an existing project, using the configuration from your .yo-rc.json file to re-generate the project...

Generating 2.048 bit RSA key pair and self-signed certificate (SHA256withRSA) with a validity of 99.999 days for: CN=Java Hipster, OU=Development, O=com.mycompany.myapp, L=, ST=, C=

KeyStore 'src/main/resources/config/tls/keystore.p12' generated successfully.

ERROR! /Users/matthiasheck/Development/upgrade/test/node_modules/generator-jhipster/generators/server/templates/src/main/resources/config/application-dev.yml.ejs:357 355| cors: 356| # Allow Ionic for JHipster by default (* no longer allowed in Spring Boot 2.4+)

357| allowed-origins: "http://localhost:8100,http://localhost:9000<% if (!skipClient) { %>,http://localhost:<%= devServerPort %><% } %>" 358| allowed-methods: "" 359| allowed-headers: "" 360| <% if (authenticationType === 'session') { %>

devServerPort is not defined ReferenceError: /Users/matthiasheck/Development/upgrade/test/node_modules/generator-jhipster/generators/server/templates/src/main/resources/config/application-dev.yml.ejs:357 355| cors: 356| # Allow Ionic for JHipster by default (* no longer allowed in Spring Boot 2.4+)

357| allowed-origins: "http://localhost:8100,http://localhost:9000<% if (!skipClient) { %>,http://localhost:<%= devServerPort %><% } %>" 358| allowed-methods: "" 359| allowed-headers: "" 360| <% if (authenticationType === 'session') { %>

devServerPort is not defined at module.exports.eval (eval at compile (/Users/matthiasheck/Development/upgrade/test/node_modules/ejs/lib/ejs.js:662:12), :374:26) at application-dev.yml (/Users/matthiasheck/Development/upgrade/test/node_modules/ejs/lib/ejs.js:692:17) at /Users/matthiasheck/Development/upgrade/test/node_modules/ejs/lib/ejs.js:258:40 at new Promise () at tryHandleCache (/Users/matthiasheck/Development/upgrade/test/node_modules/ejs/lib/ejs.js:256:14) at Object.exports.renderFile (/Users/matthiasheck/Development/upgrade/test/node_modules/ejs/lib/ejs.js:489:10) at Object.renderContent (/Users/matthiasheck/Development/upgrade/test/node_modules/generator-jhipster-kotlin/node_modules/generator-jhipster/generators/utils.js:286:23) at module.exports.template (/Users/matthiasheck/Development/upgrade/test/node_modules/generator-jhipster-kotlin/node_modules/generator-jhipster/generators/generator-base-private.js:758:26) at /Users/matthiasheck/Development/upgrade/test/node_modules/generator-jhipster-kotlin/node_modules/generator-jhipster/generators/generator-base.js:2222:47 at Array.map () { path: '/Users/matthiasheck/Development/upgrade/test/node_modules/generator-jhipster/generators/server/templates/src/main/resources/config/application-dev.yml.ejs' } ERROR! Something went wrong while generating project! Error: Command failed: "/Users/matthiasheck/Development/upgrade/test/node_modules/.bin/jhipster" --with-entities --force --skip-install --skip-git --no-insight Error: Something went wrong while generating project! Error: Command failed: "/Users/matthiasheck/Development/upgrade/test/node_modules/.bin/jhipster" --with-entities --force --skip-install --skip-git --no-insight at module.exports.error (/Users/matthiasheck/.nvm/versions/node/v14.17.0/lib/node_modules/generator-jhipster/generators/generator-base.js:1788:11) at module.exports._generate (/Users/matthiasheck/.nvm/versions/node/v14.17.0/lib/node_modules/generator-jhipster/generators/upgrade/index.js:174:12) at module.exports._regenerate (/Users/matthiasheck/.nvm/versions/node/v14.17.0/lib/node_modules/generator-jhipster/generators/upgrade/index.js:190:10) at module.exports.generateWithTargetVersion (/Users/matthiasheck/.nvm/versions/node/v14.17.0/lib/node_modules/generator-jhipster/generators/upgrade/index.js:478:14) at Object. (/Users/matthiasheck/.nvm/versions/node/v14.17.0/lib/node_modules/generator-jhipster/node_modules/yeoman-generator/lib/index.js:1024:25) at /Users/matthiasheck/.nvm/versions/node/v14.17.0/lib/node_modules/generator-jhipster/node_modules/run-async/index.js:49:25 at new Promise () at /Users/matthiasheck/.nvm/versions/node/v14.17.0/lib/node_modules/generator-jhipster/node_modules/run-async/index.js:26:19 at runLoop.add.once.once (/Users/matthiasheck/.nvm/versions/node/v14.17.0/lib/node_modules/generator-jhipster/node_modules/yeoman-generator/lib/index.js:1025:11) at Immediate. (/Users/matthiasheck/.nvm/versions/node/v14.17.0/lib/node_modules/generator-jhipster/node_modules/grouped-queue/lib/subqueue.js:48:34)

matze42 commented 3 years ago

This is my global setup: npm ls -g -depth=0 /Users/matthiasheck/.nvm/versions/node/v14.17.0/lib ├── generator-jhipster@7.1.0 └── npm@7.19.1

rburgst commented 3 years ago

same problem

ERROR! /Users/rainer/.config/yarn/global/node_modules/generator-jhipster/generators/server/templates/src/main/resources/config/application-dev.yml.ejs:357
    355|   cors:
    356|     # Allow Ionic for JHipster by default (* no longer allowed in Spring Boot 2.4+)
 >> 357|     allowed-origins: "http://localhost:8100,http://localhost:9000<%_ if (!skipClient) { _%>,http://localhost:<%= devServerPort %><%_ } _%>"
    358|     allowed-methods: "*"
    359|     allowed-headers: "*"
    360| <%_ if (authenticationType === 'session') { _%>

devServerPort is not defined
rburgst commented 3 years ago

I tried to define

    "devServerPort": 9060,

in yo-rc.json but that didnt help either. Very strange

rburgst commented 3 years ago

This might be due to the fact that the global jhipster version is 7.1.0 (which uses the new devServerPort) while generator-jhipster-kotlin uses 7.0.1.

sendilkumarn commented 2 years ago

Closing this issue! Please feel free to reopen if the issue persists