Hauptmenü

Kix 18 Frontend startet nicht weil scheinbar Module fehlen

Begonnen von DirkW., 26.02.2025 09:46:48

⏪ vorheriges - nächstes ⏩

DirkW.

Hallo Zusammen

Es gib zwar schon ein Thread zu den Thema, aber das scheint ein anderes Problem zu sein.

Wir sind gerade dabei Kix18 zu testen. Anfangs hat auch alles funktioniert, aber seit ca. einer Woche will das Frontend nicht mehr starten. 

Mit der Vermutung ich hatte ggf. etwas Kaputt konfiguriert, habe ich eine neuen VM aufgesetzt und ohne Änderungen an der Config startet auch dort das Frontend nicht mehr. 

Das Log sagt dazu:

frontend_1  | + export BACKEND_API_TOKEN
frontend_1  | + break
frontend_1  | + npm start
frontend_1  |
frontend_1  | > @kix/frontend@19.0.0 start
frontend_1  | > node dist/server/index.js
frontend_1  |
frontend_1  | node:internal/modules/cjs/loader:1244
frontend_1  |  const err = new Error(message);
frontend_1  |              ^
frontend_1  |
frontend_1  | Error: Cannot find module '/mnt/data/config/server.config.json'
frontend_1  | Require stack:
frontend_1  | - /mnt/data/dist/server/services/ConfigurationService.js
frontend_1  | - /mnt/data/dist/server/index.js
frontend_1  |    at Function._resolveFilename (node:internal/modules/cjs/loader:1244:15)
frontend_1  |    at Function._load (node:internal/modules/cjs/loader:1070:27)
frontend_1  |    at TracingChannel.traceSync (node:diagnostics_channel:322:14)
frontend_1  |    at wrapModuleLoad (node:internal/modules/cjs/loader:217:24)
frontend_1  |    at Module.require (node:internal/modules/cjs/loader:1335:12)
frontend_1  |    at require (node:internal/modules/helpers:136:16)
frontend_1  |    at ConfigurationService.loadServerConfig (/mnt/data/dist/server/services/ConfigurationService.js:50:24)
frontend_1  |    at ConfigurationService.init (/mnt/data/dist/server/services/ConfigurationService.js:30:41)
frontend_1  |    at initializeServer (/mnt/data/dist/server/index.js:33:63)
frontend_1  |    at Object.<anonymous> (/mnt/data/dist/server/index.js:144:1) {
frontend_1  |  code: 'MODULE_NOT_FOUND',
frontend_1  |  requireStack: [
frontend_1  |    '/mnt/data/dist/server/services/ConfigurationService.js',
frontend_1  |    '/mnt/data/dist/server/index.js'
frontend_1  |  ]
frontend_1  | }
frontend_1  |
frontend_1  | Node.js v22.13.1
frontend_1  | npm notice
frontend_1  | npm notice New major version of npm available! 10.9.2 -> 11.1.0
frontend_1  | npm notice Changelog: https://github.com/npm/cli/releases/tag/v11.1.0
frontend_1  | npm notice To update run: npm install -g npm@11.1.0
frontend_1  | npm notice
kix_frontend_1 exited with code 1

VG 
Dirk

Beatrice Müller

Hallo Dirk,

befinden sich Bind-Mounts im Frontend-Container (https://forum.kixdesk.com/index.php?topic=12539.0)?
Falls ja, müssten die verwendeten Mountpoints geändert werden (docker-compose.yml):
IST:  /opt/kix/dist/
SOLL: /opt/kix/dist.d/

Viele Grüße
Beatrice

dermichel

Hallo,
ich wollte mich zu dem Thema auch mal einbringen. In meiner geclonten Testumgebung habe ich nach dem Update genau den gleichen Fehler.
Folgende Volumes sind in der docker-compose.yml eingebunden:

    volumes:
      - shared:/mnt/shared
      - frontend:/mnt/data

> node dist/server/index.js
> @kix/frontend@19.0.0 start
+ npm start
Node.js v22.13.1
}
  ]
    '/mnt/data/dist/server/index.js'
  requireStack: [
    '/mnt/data/dist/server/services/ConfigurationService.js',
  code: 'MODULE_NOT_FOUND',
    at Object.<anonymous> (/mnt/data/dist/server/index.js:144:1) {
    at initializeServer (/mnt/data/dist/server/index.js:33:63)
    at ConfigurationService.init (/mnt/data/dist/server/services/ConfigurationService.js:30:41)
    at ConfigurationService.loadServerConfig (/mnt/data/dist/server/services/ConfigurationService.js:50:24)
    at require (node:internal/modules/helpers:136:16)
    at wrapModuleLoad (node:internal/modules/cjs/loader:217:24)
    at Module.require (node:internal/modules/cjs/loader:1335:12)
    at TracingChannel.traceSync (node:diagnostics_channel:322:14)
    at Function._load (node:internal/modules/cjs/loader:1070:27)
    at Function._resolveFilename (node:internal/modules/cjs/loader:1244:15)
- /mnt/data/dist/server/services/ConfigurationService.js
- /mnt/data/dist/server/index.js
Require stack:
Error: Cannot find module '/mnt/data/config/server.config.json'
              ^
  const err = new Error(message);
node:internal/modules/cjs/loader:1244


Kann man in der .yml Datei eine ältere Version vom Frontend aufrufen die Funktioniert?


Beatrice Müller

Hallo,

bitte das Update erneut probieren und wenn das Problem wieder auftaucht:
Prüfen, ob /opt/kix/config im Container (fälschlicherweise) ein Symlink zu /mnt/data/config geworden ist.

So sollte es aussehen:

in den FE-Container wechseln
docker exec -it kix-frontend-1 bash
Verzeichnis /opt/kix/config prüfen
/opt/kix$ ls -l config -d
drwxrwxrwx    2 root    root          4096 Feb 13 10:49 config

Verzeichnisinhalt prüfen
/opt/kix$ ls -l config
-rw-rw-rw-    1 root    root          1197 Feb 12 11:04 server.config.json

In diesem Fall gibt es keine Symlinks. Andernfalls müsste der Link entfernt werden.

Viele Grüße
Beatrice


dermichel

Auch nach einem erneuten Update ist der Fehler noch vorhanden:

frontend-1  | Error: Cannot find module '/mnt/data/config/server.config.json'
frontend-1  | Require stack:
frontend-1  | - /mnt/data/dist/server/services/ConfigurationService.js
frontend-1  | - /mnt/data/dist/server/index.js
frontend-1  |     at Function._resolveFilename (node:internal/modules/cjs/loader:1244:15)
frontend-1  |     at Function._load (node:internal/modules/cjs/loader:1070:27)
frontend-1  |     at TracingChannel.traceSync (node:diagnostics_channel:322:14)
frontend-1  |     at wrapModuleLoad (node:internal/modules/cjs/loader:217:24)
frontend-1  |     at Module.require (node:internal/modules/cjs/loader:1335:12)
frontend-1  |     at require (node:internal/modules/helpers:136:16)
frontend-1  |     at ConfigurationService.loadServerConfig (/mnt/data/dist/server/services/ConfigurationService.js:50:24)
frontend-1  |     at ConfigurationService.init (/mnt/data/dist/server/services/ConfigurationService.js:30:41)
frontend-1  |     at initializeServer (/mnt/data/dist/server/index.js:33:63)
frontend-1  |     at Object.<anonymous> (/mnt/data/dist/server/index.js:144:1) {
frontend-1  |   code: 'MODULE_NOT_FOUND',
frontend-1  |   requireStack: [
frontend-1  |     '/mnt/data/dist/server/services/ConfigurationService.js',
frontend-1  |     '/mnt/data/dist/server/index.js'
frontend-1  |   ]
frontend-1  | }
frontend-1  |
frontend-1  | Node.js v22.13.1
frontend-1  | npm notice
frontend-1  | npm notice New major version of npm available! 10.9.2 -> 11.1.0
frontend-1  | npm notice Changelog: https://github.com/npm/cli/releases/tag/v11.1.0
frontend-1  | npm notice To update run: npm install -g npm@11.1.0
frontend-1  | npm notice
frontend-1 exited with code 1

Leider ist der Container danach direkt gestoppt - kein Login in eine Shell möglich.....




dermichel

#5
Also ich habe den Container mal manuell gestartet und mir das Verzeichnis angesehen.

docker run -it docker-registry.kixdesk.com/public/frontend:stable sleep 20200202
+ export KIX_HOME=/opt/kix
+ KIX_HOME=/opt/kix
+ export no_proxy=backend
+ no_proxy=backend
+ export NODE_OPTIONS=--max-old-space-size=3072
+ NODE_OPTIONS=--max-old-space-size=3072
+ export npm_config_cache=/tmp/.npm
+ npm_config_cache=/tmp/.npm
+ export NPM_CACHE_LOCATION=/tmp/.npm
+ NPM_CACHE_LOCATION=/tmp/.npm
+ export NODE_PATH=/opt/kix:/opt/kix/node_modules
+ NODE_PATH=/opt/kix:/opt/kix/node_modules
+ export SSP_PORT=3002
+ SSP_PORT=3002
+ mkdir -p /tmp/.npm
+ for DIR in logs data .cache dist
+ '[' '!' -d /mnt/data/logs ']'
+ for DIR in logs data .cache dist
+ '[' '!' -d /mnt/data/data ']'
+ for DIR in logs data .cache dist
+ '[' '!' -d /mnt/data/.cache ']'
+ for DIR in logs data .cache dist
+ '[' '!' -d /mnt/data/dist ']'
+ '[' -d /mnt/data/plugins ']'
+ '[' -d /mnt/data/patches ']'
+ export LANG=C.UTF-8
+ LANG=C.UTF-8
+ echo -n
+ test -d /usr/local/docker-entrypoint.sh.d
+ run-parts /usr/local/docker-entrypoint.sh.d
+ export KIX_HOME=/opt/kix
+ KIX_HOME=/opt/kix
+ cp -rf /opt/kix/dist.d/. /opt/kix/dist/
+ ls -la /opt/kix
total 296
drwxrwxrwx    1 root     root          4096 Feb 12 15:35 .
drwxr-xr-x    1 root     root          4096 Jan 24 10:16 ..
lrwxrwxrwx    1 root     root            16 Feb 12 15:35 .cache -> /mnt/data/.cache
-rw-rw-rw-    1 root     root         35148 Feb 12 11:04 LICENSE
-rw-rw-rw-    1 root     root        187333 Feb 12 11:04 LICENSE-Third-Party
-rw-rw-rw-    1 root     root           139 Feb 12 11:04 RELEASE
drwxrwxrwx    2 root     root          4096 Feb 12 15:35 cert
drwxrwxrwx    2 root     root          4096 Feb 12 15:35 config
lrwxrwxrwx    1 root     root            14 Feb 12 15:35 data -> /mnt/data/data
lrwxrwxrwx    1 root     root            14 Feb 12 15:35 dist -> /mnt/data/dist
drwxrwxrwx    5 root     root          4096 Feb 12 15:35 dist.d
drwxrwxrwx    7 root     root          4096 Feb 12 15:35 doc
drwxrwxrwx    3 root     root          4096 Feb 12 15:35 features
drwxrwxrwx    2 root     root          4096 Feb 12 15:35 locale
lrwxrwxrwx    1 root     root            14 Feb 12 15:35 logs -> /mnt/data/logs
drwxrwxrwx  497 root     root         20480 Feb 12 15:35 node_modules
-rw-rw-rw-    1 root     root          6623 Feb 12 11:04 package.json
-rw-rw-rw-    1 root     root          1134 Feb 12 11:04 readme.md
drwxrwxrwx    3 root     root          4096 Feb 12 15:35 static
-rw-rw-rw-    1 root     root           761 Feb 12 11:04 written-offer.txt
+ ls -la /opt/kix/dist/
total 24
drwxrwxrwx    1 root     root          4096 Mar  5 13:38 .
drwxrwxrwx    1 root     root          4096 Feb 12 15:35 ..
drwxr-xr-x    3 root     root          4096 Mar  5 13:38 frontend-applications
drwxr-xr-x    2 root     root          4096 Mar  5 13:38 plugins
drwxr-xr-x    4 root     root          4096 Mar  5 13:38 server
++ grep BUILDNUMBER /opt/kix/RELEASE
++ sed -e 's/ *//g'
++ cut -d= -f2
++ grep PATCHNUMBER /opt/kix/RELEASE
++ sed -e 's/ *//g'
++ cut -d= -f2
+ BUILD=4714-3
++ cat /opt/kix/data/framework
+ INSTALLED_BUILD=
+ '[' 4714-3 '!=' '' ']'
+ rm -rf /opt/kix/.cache/lasso '/opt/kix/dist/frontend-applications/agent-portal/static/applications/*'
+ waitfor 'redis cache' 10 'redis-cli -h redis ping'

Dann in den Container rein und prüfen:

root@vm-kix-demo ~ # docker exec -it 5b850a47583c bash
5b850a47583c:/opt/kix# ls -l
total 288
-rw-rw-rw-    1 root     root         35148 Feb 12 11:04 LICENSE
-rw-rw-rw-    1 root     root        187333 Feb 12 11:04 LICENSE-Third-Party
-rw-rw-rw-    1 root     root           139 Feb 12 11:04 RELEASE
drwxrwxrwx    2 root     root          4096 Feb 12 15:35 cert
drwxrwxrwx    2 root     root          4096 Feb 12 15:35 config
lrwxrwxrwx    1 root     root            14 Feb 12 15:35 data -> /mnt/data/data
lrwxrwxrwx    1 root     root            14 Feb 12 15:35 dist -> /mnt/data/dist
drwxrwxrwx    5 root     root          4096 Feb 12 15:35 dist.d
drwxrwxrwx    7 root     root          4096 Feb 12 15:35 doc
drwxrwxrwx    3 root     root          4096 Feb 12 15:35 features
drwxrwxrwx    2 root     root          4096 Feb 12 15:35 locale
lrwxrwxrwx    1 root     root            14 Feb 12 15:35 logs -> /mnt/data/logs
drwxrwxrwx  497 root     root         20480 Feb 12 15:35 node_modules
-rw-rw-rw-    1 root     root          6623 Feb 12 11:04 package.json
-rw-rw-rw-    1 root     root          1134 Feb 12 11:04 readme.md
drwxrwxrwx    3 root     root          4096 Feb 12 15:35 static
-rw-rw-rw-    1 root     root           761 Feb 12 11:04 written-offer.txt
5b850a47583c:/opt/kix# cd config/
5b850a47583c:/opt/kix/config# ls -l
total 4
-rw-rw-rw-    1 root     root          1197 Feb 12 11:04 server.config.json
5b850a47583c:/opt/kix/config#


Sieht ja eigentlich gut aus.

Trotzdem:

frontend-1  |
frontend-1  | > @kix/frontend@19.0.0 start
frontend-1  | > node dist/server/index.js
frontend-1  |
frontend-1  | node:internal/modules/cjs/loader:1244
frontend-1  |   const err = new Error(message);
frontend-1  |               ^
frontend-1  |
frontend-1  | Error: Cannot find module '/mnt/data/config/server.config.json'
frontend-1  | Require stack:
frontend-1  | - /mnt/data/dist/server/services/ConfigurationService.js
frontend-1  | - /mnt/data/dist/server/index.js
frontend-1  |     at Function._resolveFilename (node:internal/modules/cjs/loader:1244:15)
frontend-1  |     at Function._load (node:internal/modules/cjs/loader:1070:27)
frontend-1  |     at TracingChannel.traceSync (node:diagnostics_channel:322:14)
frontend-1  |     at wrapModuleLoad (node:internal/modules/cjs/loader:217:24)
frontend-1  |     at Module.require (node:internal/modules/cjs/loader:1335:12)
frontend-1  |     at require (node:internal/modules/helpers:136:16)
frontend-1  |     at ConfigurationService.loadServerConfig (/mnt/data/dist/server/services/ConfigurationService.js:50:24)
frontend-1  |     at ConfigurationService.init (/mnt/data/dist/server/services/ConfigurationService.js:30:41)
frontend-1  |     at initializeServer (/mnt/data/dist/server/index.js:33:63)
frontend-1  |     at Object.<anonymous> (/mnt/data/dist/server/index.js:144:1) {
frontend-1  |   code: 'MODULE_NOT_FOUND',
frontend-1  |   requireStack: [
frontend-1  |     '/mnt/data/dist/server/services/ConfigurationService.js',
frontend-1  |     '/mnt/data/dist/server/index.js'
frontend-1  |   ]
frontend-1  | }
frontend-1  |
frontend-1  | Node.js v22.13.1
frontend-1  | npm notice
frontend-1  | npm notice New major version of npm available! 10.9.2 -> 11.1.0
frontend-1  | npm notice Changelog: https://github.com/npm/cli/releases/tag/v11.1.0
frontend-1  | npm notice To update run: npm install -g npm@11.1.0
frontend-1  | npm notice
frontend-1 exited with code 1

Ich hoffe das hilft euch weiter beim debuggen.


Was mir noch aufgefallen ist:

Error: Cannot find module '/mnt/data/config/server.config.json'
Müsste der Pfad nicht
/opt/kix/config/server.config.json
sein?

Beatrice Müller

Der Symlink auf dist gehört da nicht hin.

So sollte es eigentlich aussehen:
c8899459db76:/opt/kix$ ls -l
total 292
-rw-rw-rw-    1 root     root         35148 Feb 12 11:04 LICENSE
-rw-rw-rw-    1 root     root        187333 Feb 12 11:04 LICENSE-Third-Party
-rw-rw-rw-    1 root     root           139 Feb 12 11:04 RELEASE
drwxrwxrwx    2 root     root          4096 Feb 17 05:50 cert
drwxrwxrwx    2 root     root          4096 Feb 17 05:50 config
lrwxrwxrwx    1 root     root            14 Feb 17 05:50 data -> /mnt/data/data
drwxrwxrwx    1 root     root          4096 Mar  6 16:40 dist
drwxrwxrwx    5 root     root          4096 Feb 17 05:50 dist.d
drwxrwxrwx    7 root     root          4096 Feb 17 05:50 doc
drwxrwxrwx    3 root     root          4096 Feb 17 05:50 features
drwxrwxrwx    2 root     root          4096 Feb 17 05:50 locale
lrwxrwxrwx    1 root     root            14 Feb 17 05:50 logs -> /mnt/data/logs
drwxrwxrwx  497 root     root         20480 Feb 17 05:50 node_modules
-rw-rw-rw-    1 root     root          6623 Feb 12 11:04 package.json
-rw-rw-rw-    1 root     root          1134 Feb 12 11:04 readme.md
drwxrwxrwx    3 root     root          4096 Feb 17 05:50 static
-rw-rw-rw-    1 root     root           761 Feb 12 11:04 written-offer.txt

Nach entfernen des Links folgende Befehle absetzen:
docker exec kix-frontend-1 rm -rf .cache/lasso
docker rm -f kix-frontend-1
./start.sh

STrike

Hallo,

ich habe auch so meine Probleme mit dem Frontend. Ich wollte mir dies heute auch in ruhe einmal anschauen und eine testinstanz/demo aufsetzen.

VM von Stretch mit Ubuntu Docker und nach Anleitung vorgegangen.

Leider komme ich auf genau den gleichen Fehler wie hier im Post.
System leider doch/noch nicht ausgereift, wenn man schon so schwierige Anfänge hat.

Hat das jemand gefixt bekommen?

dermichel

Ich habe die Container gestartet und mit
docker exec kix-frontend-1 unlink /opt/kix/distden Link entfernen können. Da der Container immer mit "Error 1" aussteigt, musste ich es mehrmals versuchen bis der Befehl im richtigen Zeitpunkt angenommen wurde.
Trotzdem kommt der Fehler:
[pre]Error: Cannot find module '/opt/kix/dist/server/index.js'
    at Function._resolveFilename (node:internal/modules/cjs/loader:1244:15)
    at Function._load (node:internal/modules/cjs/loader:1070:27)
    at TracingChannel.traceSync (node:diagnostics_channel:322:14)
    at wrapModuleLoad (node:internal/modules/cjs/loader:217:24)
    at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:170:5)
    at node:internal/main/run_main_module:36:49 {
  code: 'MODULE_NOT_FOUND',
  requireStack: []
}
Node.js v22.13.1[/pre]
Mehr geht dann auch nicht, denn der Container ist super schnell weg mit Exit 1.

Ich werde einfach warten bis ein weiteres Update mit einem neuen Container kommt :-)


Beatrice Müller

Bitte jetzt noch einmal das Update durchführen. Wir haben den Image-Satz neu erstellt.

dermichel

#10
Vorab: alle Container wurden geupdated wie erwartet. Alles startet und funktioniert. Bei uns muss ich allerdings das Frontend nochmal restarten.
Es steigt schon seit einigen Versionen bei Start aus und nach einem Restart des Containers geht alles wunderbar. Ich habe das inzwischen schon in den Start eingebaut und kann ganz gut damit leben. Also alles wieder OK....

frontend-1  | Wed Mar 19 2025 08:16:16 GMT+0100 (Central European Standard Time) - info: 84 - [SERVER] Start
frontend-1  | Wed Mar 19 2025 08:16:16 GMT+0100 (Central European Standard Time) - info: 84 - Initialize 28 service extensions
frontend-1  | Wed Mar 19 2025 08:16:16 GMT+0100 (Central European Standard Time) - info: 84 - Initialize Redis cache backend
frontend-1  | Wed Mar 19 2025 08:16:16 GMT+0100 (Central European Standard Time) - info: 84 - Create ClientRegsitration
frontend-1  | Wed Mar 19 2025 08:16:16 GMT+0100 (Central European Standard Time) - info: 84 - [CLIENT REGISTRATION] Start
frontend-1  | Wed Mar 19 2025 08:16:16 GMT+0100 (Central European Standard Time) - info: 84 - Update translations
frontend-1  | Wed Mar 19 2025 08:16:16 GMT+0100 (Central European Standard Time) - info: 84 - Create Default Configurations
frontend-1  | Wed Mar 19 2025 08:16:16 GMT+0100 (Central European Standard Time) - info: 84 - REDIS connecting
frontend-1  | Wed Mar 19 2025 08:16:17 GMT+0100 (Central European Standard Time) - info: 84 - Found 93 configuration extensions
frontend-1  | Wed Mar 19 2025 08:16:17 GMT+0100 (Central European Standard Time) - info: 84 - REDIS ready
frontend-1  | Wed Mar 19 2025 08:16:17 GMT+0100 (Central European Standard Time) - info: 84 - REDIS: Subscribed to channel KIXFrontendNotify
frontend-1  | Wed Mar 19 2025 08:16:17 GMT+0100 (Central European Standard Time) - error: 84 - Error during HTTP (session/user) GET request.
frontend-1  | Wed Mar 19 2025 08:16:17 GMT+0100 (Central European Standard Time) - error: 84 - (401) Unauthorized User is not authorized. The requested operation cannot be executed.
frontend-1  | Wed Mar 19 2025 08:16:17 GMT+0100 (Central European Standard Time) - error: 84 - An unhandledRejection occured:
frontend-1  | Wed Mar 19 2025 08:16:17 GMT+0100 (Central European Standard Time) - error: 84 - [object Object]
frontend-1  | Unhandled Rejection at: Promise Promise {
frontend-1  |   <rejected> Error {
frontend-1  |     Code: 'Unauthorized',
frontend-1  |     Message: 'User is not authorized. The requested operation cannot be executed.',
frontend-1  |     StatusCode: 401
frontend-1  |   }
frontend-1  | } reason: Error {
frontend-1  |   Code: 'Unauthorized',
frontend-1  |   Message: 'User is not authorized. The requested operation cannot be executed.',
frontend-1  |   StatusCode: 401
frontend-1  | }
frontend-1  | Error {
frontend-1  |   Code: 'Unauthorized',
frontend-1  |   Message: 'User is not authorized. The requested operation cannot be executed.',
frontend-1  |   StatusCode: 401
frontend-1  | }


Falls jemand das Startscript für die rc.local braucht. Ich nutze das "post-thaw-script", weil ich die Umgebung anhalte fürs Backup und nach dem Snapshot wieder starte:

#!/bin/bash

cd /opt/kix-on-premise/deploy/linux

./start.sh

sleep 60

containerid=$(/usr/bin/docker ps -aqf name=kix-frontend-1)

echo $containerid

docker restart $containerid

Beatrice Müller

Das freut mich zu lesen. Das Start-Problem haben wir bereits auf dem Schirm, daher wird es mit v35 eine Änderung im Deployment geben.