FTBTeam / FTB-App

Electron, Vue2, and Tailwind based frontend system for the FTB App; a new Modpack launcher for FTB and Curse modpacks.
https://feed-the-beast.com/app
GNU Lesser General Public License v2.1
86 stars 22 forks source link

Provide an updated docs for how to develop and running the app #1033

Closed MindTooth closed 3 months ago

MindTooth commented 7 months ago

What is your suggestion?

I've been it for some time now — having contributed — trying to make this a good workflow. However, I struggle a bit to create a proper test.

E.g. it states yarn in the README.md, but pnpm is used. It talks about a backend, but getting that up and running is a task in itself.

So, how can we improve this? My current setup is latest macOS, latest Java (21), lates Node (21), latest pnpm, etc. If we need some specific version, this should be provided.

Alternatives ideas

No response

Screenshots

No response

Additional information

No response

MichaelHillcox commented 7 months ago

I develop exclusively on MacOS in IntellJ

And you should be good. There isn't much magic needed, the readme is just a bit old now as we've updated and changed bits here and there

It's worth noting that install4j is basically impossible to test unless you have a license and even then it's hard to test so I wouldn't recommend trying to touch that stuff

MindTooth commented 7 months ago

I can help update the README.md with what you wrote above. 👍🏻 I think perhaps you ment pnpm run serve. However, still some bugs for me:

 INFO  Launching Electron...
13:52:27.682 › Setting default port and secret
13:52:27.688 › No backend found, starting our own
13:52:27.689 › Our PID is 57306
13:52:27.689 › Exec path is /Users/birgerjn/Developer/FTB-App/node_modules/.pnpm/electron@22.3.4/node_modules/electron/dist/Electron.app/Contents/MacOS/Electron
13:52:27.689 › Current working directory is /Users/birgerjn/Developer/FTB-App/node_modules/.pnpm/electron@22.3.4/node_modules/electron/dist/Electron.app/Contents/MacOS
13:52:27.693 › Could not find the binary to launch backend /Users/birgerjn/Developer/FTB-App/node_modules/.pnpm/electron@22.3.4/node_modules/electron/dist/Electron.app/Contents/FTBApp
13:52:27.695 › Got the lock
13:52:27.695 › (node:57306) [DEP0128] DeprecationWarning: Invalid 'main' field in '/Users/birgerjn/Developer/FTB-App/dist_electron/package.json' of 'background.js'. Please either fix that or report it to the module author
(Use `Electron --trace-deprecation ...` to show where the warning was created)
13:52:28.017 › (node:57306) ExtensionLoadWarning: Warnings loading extension at /Users/birgerjn/Library/Application Support/ftb-app/extensions/nhdogjmejiglipccpnnnanhbledajbpd:
  Manifest version 2 is deprecated, and support will be removed in 2023. See https://developer.chrome.com/blog/mv2-transition/ for more details.
13:52:28.523 › Platform failed resolve deps TypeError: Cannot read properties of null (reading 'branch')
    at eval (webpack-internal:///./src/utils/interface/electron.ts:215:31)
    at ./src/utils/interface/electron.ts (http://localhost:8080/js/0.js:284:1)
    at __webpack_require__ (http://localhost:8080/js/index.js:854:30)
    at fn (http://localhost:8080/js/index.js:151:20)
13:52:28.544 › [Vue warn]: Error in render: "TypeError: Cannot read properties of undefined (reading 'branch')"
found in
---> <TitleBar> at src/components/layout/TitleBar.vue
       <MainApp> at src/views/MainApp.vue
         <App> at src/App.vue
           <Root>
13:52:28.545 › TypeError: Cannot read properties of undefined (reading 'branch')
    at VueComponent.get (webpack-internal:///./node_modules/.pnpm/cache-loader@4.1.0_webpack@4.46.0/node_modules/cache-loader/dist/cjs.js?!./node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.0_webpack@4.46.0/node_modules/babel-loader/lib/index.js!./node_modules/.pnpm/ts-loader@6.2.2_typescript@4.9.5/node_modules/ts-loader/index.js?!./node_modules/.pnpm/cache-loader@4.1.0_webpack@4.46.0/node_modules/cache-loader/dist/cjs.js?!./node_modules/.pnpm/vue-loader@15.10.1_babel-core@7.0.0-bridge.0_cache-loader@4.1.0_css-loader@3.6.0_vue-template_o4dimpuolvo4pa4n27evtbjfoe/node_modules/vue-loader/lib/index.js?!./src/components/layout/TitleBar.vue?vue&type=script&lang=ts&:93:100)
    at Watcher.get (webpack-internal:///./node_modules/.pnpm/vue@2.7.14/node_modules/vue/dist/vue.runtime.esm.js:3485:33)
    at Watcher.evaluate (webpack-internal:///./node_modules/.pnpm/vue@2.7.14/node_modules/vue/dist/vue.runtime.esm.js:3586:27)
    at VueComponent.computedGetter [as branch] (webpack-internal:///./node_modules/.pnpm/vue@2.7.14/node_modules/vue/dist/vue.runtime.esm.js:5572:25)
    at Object.get (webpack-internal:///./node_modules/.pnpm/vue@2.7.14/node_modules/vue/dist/vue.runtime.esm.js:5366:26)
    at Proxy.render (webpack-internal:///./node_modules/.pnpm/cache-loader@4.1.0_webpack@4.46.0/node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"0fbb950b-vue-loader-template"}!./node_modules/.pnpm/cache-loader@4.1.0_webpack@4.46.0/node_modules/cache-loader/dist/cjs.js?!./node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.0_webpack@4.46.0/node_modules/babel-loader/lib/index.js!./node_modules/.pnpm/vue-loader@15.10.1_babel-core@7.0.0-bridge.0_cache-loader@4.1.0_css-loader@3.6.0_vue-template_o4dimpuolvo4pa4n27evtbjfoe/node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/.pnpm/cache-loader@4.1.0_webpack@4.46.0/node_modules/cache-loader/dist/cjs.js?!./node_modules/.pnpm/vue-loader@15.10.1_babel-core@7.0.0-bridge.0_cache-loader@4.1.0_css-loader@3.6.0_vue-template_o4dimpuolvo4pa4n27evtbjfoe/node_modules/vue-loader/lib/index.js?!./src/components/layout/TitleBar.vue?vue&type=template&id=2ef1de20&scoped=true&:27:11)
    at Vue._render (webpack-internal:///./node_modules/.pnpm/vue@2.7.14/node_modules/vue/dist/vue.runtime.esm.js:2723:28)
    at VueComponent.updateComponent (webpack-internal:///./node_modules/.pnpm/vue@2.7.14/node_modules/vue/dist/vue.runtime.esm.js:3914:27)
    at Watcher.get (webpack-internal:///./node_modules/.pnpm/vue@2.7.14/node_modules/vue/dist/vue.runtime.esm.js:3485:33)
    at new Watcher (webpack-internal:///./node_modules/.pnpm/vue@2.7.14/node_modules/vue/dist/vue.runtime.esm.js:3475:51)
13:52:28.556 › [Vue warn]: Error in mounted hook: "TypeError: Cannot read properties of undefined (reading 'setupTitleBar')"
found in
---> <TitleBar> at src/components/layout/TitleBar.vue
       <MainApp> at src/views/MainApp.vue
         <App> at src/App.vue
           <Root>
13:52:28.556 › TypeError: Cannot read properties of undefined (reading 'setupTitleBar')
    at VueComponent.mounted (webpack-internal:///./node_modules/.pnpm/cache-loader@4.1.0_webpack@4.46.0/node_modules/cache-loader/dist/cjs.js?!./node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.0_webpack@4.46.0/node_modules/babel-loader/lib/index.js!./node_modules/.pnpm/ts-loader@6.2.2_typescript@4.9.5/node_modules/ts-loader/index.js?!./node_modules/.pnpm/cache-loader@4.1.0_webpack@4.46.0/node_modules/cache-loader/dist/cjs.js?!./node_modules/.pnpm/vue-loader@15.10.1_babel-core@7.0.0-bridge.0_cache-loader@4.1.0_css-loader@3.6.0_vue-template_o4dimpuolvo4pa4n27evtbjfoe/node_modules/vue-loader/lib/index.js?!./src/components/layout/TitleBar.vue?vue&type=script&lang=ts&:42:92)
    at invokeWithErrorHandling (webpack-internal:///./node_modules/.pnpm/vue@2.7.14/node_modules/vue/dist/vue.runtime.esm.js:3056:61)
    at callHook$1 (webpack-internal:///./node_modules/.pnpm/vue@2.7.14/node_modules/vue/dist/vue.runtime.esm.js:4070:13)
    at Object.insert (webpack-internal:///./node_modules/.pnpm/vue@2.7.14/node_modules/vue/dist/vue.runtime.esm.js:4460:13)
    at invokeInsertHook (webpack-internal:///./node_modules/.pnpm/vue@2.7.14/node_modules/vue/dist/vue.runtime.esm.js:6975:38)
    at Vue.patch [as __patch__] (webpack-internal:///./node_modules/.pnpm/vue@2.7.14/node_modules/vue/dist/vue.runtime.esm.js:7186:9)
    at Vue._update (webpack-internal:///./node_modules/.pnpm/vue@2.7.14/node_modules/vue/dist/vue.runtime.esm.js:3804:25)
    at Vue.updateComponent (webpack-internal:///./node_modules/.pnpm/vue@2.7.14/node_modules/vue/dist/vue.runtime.esm.js:3914:16)
    at Watcher.get (webpack-internal:///./node_modules/.pnpm/vue@2.7.14/node_modules/vue/dist/vue.runtime.esm.js:3485:33)
    at new Watcher (webpack-internal:///./node_modules/.pnpm/vue@2.7.14/node_modules/vue/dist/vue.runtime.esm.js:3475:51)
13:52:28.557 › [Vue warn]: Error in mounted hook: "TypeError: Cannot read properties of undefined (reading 'setupTitleBar')"
found in
---> <MainApp> at src/views/MainApp.vue
       <App> at src/App.vue
         <Root>
13:52:28.557 › TypeError: Cannot read properties of undefined (reading 'setupTitleBar')
    at VueComponent.mounted (webpack-internal:///./node_modules/.pnpm/cache-loader@4.1.0_webpack@4.46.0/node_modules/cache-loader/dist/cjs.js?!./node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.0_webpack@4.46.0/node_modules/babel-loader/lib/index.js!./node_modules/.pnpm/ts-loader@6.2.2_typescript@4.9.5/node_modules/ts-loader/index.js?!./node_modules/.pnpm/cache-loader@4.1.0_webpack@4.46.0/node_modules/cache-loader/dist/cjs.js?!./node_modules/.pnpm/vue-loader@15.10.1_babel-core@7.0.0-bridge.0_cache-loader@4.1.0_css-loader@3.6.0_vue-template_o4dimpuolvo4pa4n27evtbjfoe/node_modules/vue-loader/lib/index.js?!./src/views/MainApp.vue?vue&type=script&lang=ts&:115:31)
    at invokeWithErrorHandling (webpack-internal:///./node_modules/.pnpm/vue@2.7.14/node_modules/vue/dist/vue.runtime.esm.js:3056:61)
    at callHook$1 (webpack-internal:///./node_modules/.pnpm/vue@2.7.14/node_modules/vue/dist/vue.runtime.esm.js:4070:13)
    at Object.insert (webpack-internal:///./node_modules/.pnpm/vue@2.7.14/node_modules/vue/dist/vue.runtime.esm.js:4460:13)
    at invokeInsertHook (webpack-internal:///./node_modules/.pnpm/vue@2.7.14/node_modules/vue/dist/vue.runtime.esm.js:6975:38)
    at Vue.patch [as __patch__] (webpack-internal:///./node_modules/.pnpm/vue@2.7.14/node_modules/vue/dist/vue.runtime.esm.js:7186:9)
    at Vue._update (webpack-internal:///./node_modules/.pnpm/vue@2.7.14/node_modules/vue/dist/vue.runtime.esm.js:3804:25)
    at Vue.updateComponent (webpack-internal:///./node_modules/.pnpm/vue@2.7.14/node_modules/vue/dist/vue.runtime.esm.js:3914:16)
    at Watcher.get (webpack-internal:///./node_modules/.pnpm/vue@2.7.14/node_modules/vue/dist/vue.runtime.esm.js:3485:33)
    at new Watcher (webpack-internal:///./node_modules/.pnpm/vue@2.7.14/node_modules/vue/dist/vue.runtime.esm.js:3475:51)
13:52:28.559 › [Vue warn]: Error in render: "TypeError: Cannot read properties of undefined (reading 'branch')"
found in
---> <TitleBar> at src/components/layout/TitleBar.vue
       <MainApp> at src/views/MainApp.vue
         <App> at src/App.vue
           <Root>
13:52:28.559 › TypeError: Cannot read properties of undefined (reading 'branch')
    at VueComponent.get (webpack-internal:///./node_modules/.pnpm/cache-loader@4.1.0_webpack@4.46.0/node_modules/cache-loader/dist/cjs.js?!./node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.0_webpack@4.46.0/node_modules/babel-loader/lib/index.js!./node_modules/.pnpm/ts-loader@6.2.2_typescript@4.9.5/node_modules/ts-loader/index.js?!./node_modules/.pnpm/cache-loader@4.1.0_webpack@4.46.0/node_modules/cache-loader/dist/cjs.js?!./node_modules/.pnpm/vue-loader@15.10.1_babel-core@7.0.0-bridge.0_cache-loader@4.1.0_css-loader@3.6.0_vue-template_o4dimpuolvo4pa4n27evtbjfoe/node_modules/vue-loader/lib/index.js?!./src/components/layout/TitleBar.vue?vue&type=script&lang=ts&:93:100)
    at Watcher.get (webpack-internal:///./node_modules/.pnpm/vue@2.7.14/node_modules/vue/dist/vue.runtime.esm.js:3485:33)
    at Watcher.evaluate (webpack-internal:///./node_modules/.pnpm/vue@2.7.14/node_modules/vue/dist/vue.runtime.esm.js:3586:27)
    at VueComponent.computedGetter [as branch] (webpack-internal:///./node_modules/.pnpm/vue@2.7.14/node_modules/vue/dist/vue.runtime.esm.js:5572:25)
    at Object.get (webpack-internal:///./node_modules/.pnpm/vue@2.7.14/node_modules/vue/dist/vue.runtime.esm.js:5366:26)
    at Proxy.render (webpack-internal:///./node_modules/.pnpm/cache-loader@4.1.0_webpack@4.46.0/node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"0fbb950b-vue-loader-template"}!./node_modules/.pnpm/cache-loader@4.1.0_webpack@4.46.0/node_modules/cache-loader/dist/cjs.js?!./node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.0_webpack@4.46.0/node_modules/babel-loader/lib/index.js!./node_modules/.pnpm/vue-loader@15.10.1_babel-core@7.0.0-bridge.0_cache-loader@4.1.0_css-loader@3.6.0_vue-template_o4dimpuolvo4pa4n27evtbjfoe/node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/.pnpm/cache-loader@4.1.0_webpack@4.46.0/node_modules/cache-loader/dist/cjs.js?!./node_modules/.pnpm/vue-loader@15.10.1_babel-core@7.0.0-bridge.0_cache-loader@4.1.0_css-loader@3.6.0_vue-template_o4dimpuolvo4pa4n27evtbjfoe/node_modules/vue-loader/lib/index.js?!./src/components/layout/TitleBar.vue?vue&type=template&id=2ef1de20&scoped=true&:27:11)
    at Vue._render (webpack-internal:///./node_modules/.pnpm/vue@2.7.14/node_modules/vue/dist/vue.runtime.esm.js:2723:28)
    at VueComponent.updateComponent (webpack-internal:///./node_modules/.pnpm/vue@2.7.14/node_modules/vue/dist/vue.runtime.esm.js:3914:27)
    at Watcher.get (webpack-internal:///./node_modules/.pnpm/vue@2.7.14/node_modules/vue/dist/vue.runtime.esm.js:3485:33)
    at Watcher.run (webpack-internal:///./node_modules/.pnpm/vue@2.7.14/node_modules/vue/dist/vue.runtime.esm.js:3561:30)
13:52:28.559 › TypeError: _utils_interface_electron_overwolf__WEBPACK_IMPORTED_MODULE_9__.default.get.setupApp is not a function
    at _callee$ (webpack-internal:///./src/main.ts:187:90)
    at tryCatch (webpack-internal:///./node_modules/.pnpm/@babel+runtime@7.21.0/node_modules/@babel/runtime/helpers/esm/regeneratorRuntime.js:103:17)
    at Generator.eval (webpack-internal:///./node_modules/.pnpm/@babel+runtime@7.21.0/node_modules/@babel/runtime/helpers/esm/regeneratorRuntime.js:184:22)
    at Generator.eval [as throw] (webpack-internal:///./node_modules/.pnpm/@babel+runtime@7.21.0/node_modules/@babel/runtime/helpers/esm/regeneratorRuntime.js:128:21)
    at asyncGeneratorStep (webpack-internal:///./node_modules/.pnpm/@babel+runtime@7.21.0/node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js:8:24)
    at _throw (webpack-internal:///./node_modules/.pnpm/@babel+runtime@7.21.0/node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js:30:9)

I'm sorry to use this issue for posting the error. I'm trying to figure this out and hopefully I can help out with more.

MichaelHillcox commented 7 months ago

Ah yes! I forget about this step every time as it's something I've already done. You need a versions.json in the public folder

https://pste.me/@2NbrbBj6XpA

This one will work. It's something that is automatically created at ship time but needs to be mocked up in dev. I could very likely stop that being an issue though, just not looked into it.

And yeah! I did mean serve :D

MindTooth commented 7 months ago

Screenshot 2023-12-06 at 16 32 20

Woot! 🥳 I'll see of I can submit an update to the README.md file. Thank you. 🙏🏻

CJYKK commented 5 months ago

Ah yes! I forget about this step every time as it's something I've already done. You need a versions.json in the public folder

https://pste.me/@2NbrbBj6XpA

This one will work. It's something that is automatically created at ship time but needs to be mocked up in dev. I could very likely stop that being an issue though, just not looked into it.

And yeah! I did mean serve :D

I'd like to contribute too, but the Psteme link of the version.json file looks out of date, can you resend one?

MichaelHillcox commented 5 months ago
{
    "jarVersion": "invalid-as-dev-does-not-use-the-jar",
    "webVersion": "no-a-version",
    "publicVersion": packageJson.version,
    "branch": "development",
    "timestampBuilt": 1706095722
    "javaLicense": {}
}

Should work, it just needs to be there to make the app not crash