Build-administration schlägt fehl, vue3?

Hallo,

ich kann seit kurzem das Javascript für den Admin nicht mehr übersetzen lassen (bin/build-administration.sh), es kommt immer folgende Fehlermeldung:

    ERROR in ./src/core/worker/admin-worker.shared-worker.js
    Module build failed (from ./node_modules/worker-loader/dist/cjs.js):
    TypeError: Cannot read properties of undefined (reading 'for')
        at /usr/share/nodejs/webpack/lib/web/FetchCompileWasmPlugin.js:42:7
        at SyncHook.eval [as call] (eval at create (/var/www/shopware/vendor/shopware/administration/Resources/app/administration/node_modules/tapable/lib/HookCodeFactory.js:19:10), <anonymous>:9:1)
        at SyncHook.lazyCompileHook (/var/www/shopware/vendor/shopware/administration/Resources/app/administration/node_modules/tapable/lib/Hook.js:154:20)
        at Compiler.newCompilation (/var/www/shopware/vendor/shopware/administration/Resources/app/administration/node_modules/webpack/lib/Compiler.js:630:30)
        at /var/www/shopware/vendor/shopware/administration/Resources/app/administration/node_modules/webpack/lib/Compiler.js:667:29
        at AsyncSeriesHook.eval [as callAsync] (eval at create (/var/www/shopware/vendor/shopware/administration/Resources/app/administration/node_modules/tapable/lib/HookCodeFactory.js:33:10), <anonymous>:6:1)
        at AsyncSeriesHook.lazyCompileHook (/var/www/shopware/vendor/shopware/administration/Resources/app/administration/node_modules/tapable/lib/Hook.js:154:20)
        at Compiler.compile (/var/www/shopware/vendor/shopware/administration/Resources/app/administration/node_modules/webpack/lib/Compiler.js:662:28)
        at Compiler.runAsChild (/var/www/shopware/vendor/shopware/administration/Resources/app/administration/node_modules/webpack/lib/Compiler.js:328:8)
        at runAsChild (/var/www/shopware/vendor/shopware/administration/Resources/app/administration/node_modules/worker-loader/dist/supportWebpack4.js:11:26)
        at Object.pitch (/var/www/shopware/vendor/shopware/administration/Resources/app/administration/node_modules/worker-loader/dist/index.js:102:34)

Dabei ist mir aufgefallen, das ganz am Anfang folgendes kommt:

npm WARN ERESOLVE overriding peer dependency
npm WARN While resolving: @vue/server-renderer@3.3.4
npm WARN Found: vue@3.3.4
npm WARN node_modules/vue3/node_modules/vue
npm WARN 
npm WARN Could not resolve dependency:
npm WARN peer overridden vue@"2.7.14" (was "3.3.4") from @vue/server-renderer@3.3.4
npm WARN node_modules/vue3/node_modules/@vue/server-renderer
npm WARN   @vue/server-renderer@"3.3.4" from vue3@3.3.4
npm WARN   node_modules/vue3
npm WARN   1 more (vue)

NPM installiert anscheinend vue 3.3.4 oder verstehe ich das falsch? Laut den Dokumenten, die ich gefunden habe, soll mit dem Wechsel auf Shopware 6.6 auf vue3 gewechselt werden, da der Support für vue2 Ende des Jahres ausläuft. In der package.json steht folgendes drin:

"@vue/compat": "3.3.4",
"@vue/compiler-sfc": "3.3.4",
...
"vue": "2.7.14",

Der Fehler tritt bei mir auch bei einer sauberen Neuinstallation mit 6.5.7.1 auf, es liegt also nicht an irgendwelchen Plugins.

Wie bekomme ich das wieder ans laufen?

Nachtrag: Wenn ich mir die Liste der installierten Module anzeigen lassen will (npm list), kommt folgender Fehler:

npm ERR! code EOVERRIDE
npm ERR! Override for vue@^2.7.14 conflicts with direct dependency

Ich hatte die selbe Fehlermeldung nach einem Update.
Nachdem ich Shopware einmal komplett neu installiert habe, funktioniert es jetzt. Warum kann ich ehrlicherweise gar nicht so genau sagen. Die vue-Warnung kommt aber immer noch, deshalb liegt es vielleicht eher an einer nicht kompatiblen node Version. Ich habe node v18.18.2 (npm 9.8.1) installiert und Shopware 6.5.7.2

1 „Gefällt mir“

@AlexGalax Vielen Dank

Problem gelöst, falls jemand mal einen ähnlichen Fehler hat, bei mir war es anscheinend ein fehlerhaftes Softwarepaket im Debian (12 Bookwormy). Hab nach Test mit einem anderen Server (Ubuntu 23.04) die Pakete von nodeSource installiert (aktuell nodejs 18.18.2 und npm 9.8.1, werde aber auch mal nodejs 20/npm 10 probieren) und es läuft wieder.

Habe das gleiche Problem aktuell. Gibt es irgendeine schnelle Lösung hier für?
In meiner package.json steht auch nix von:

"@vue/compat": "3.3.4",
"@vue/compiler-sfc": "3.3.4",

Wie geschrieben mal eine andere nodejs-Version probieren, sofern möglich. Scheint ein Fehler in bestimmten Versionen zu sein.

Ich habe das gleiche Problem mit node version 20.5.1-deb-1nodesource1 sowie 19.9.0-deb-1nodesource1 von nodesource.com. Vorher schon mit Version 18 aus Debian Stable. Es ist so nervig…

Ich versuche mal mein Glück mit dem RC von Shopware 6.6. Der steht ja eh schon vor der Tür. Und es setzt auch node 20 voraus.
Nachtrag: Nope, zu viele Breaking Changes und unser Plugin wäre dann auch nicht mehr mit 6.5. kompatibel.

Ich habe einen Weg gefunden mit node 20 aus nodesource.com:

cd vendor/shopware/administration/Resources/app/administration/
# ggf. package.json durch eine saubere Version ersetzen, war bei mir durch diverse Versuche kaputt
rm -r node_modules
npm i
cd -
./bin/build-administration.sh

Ohne Gewähr, dass das allen hier hilft.

Hat hier jemand eine verlässliche Lösung gefunden?
Ich benutze dockware/dev:6.5.8.10 und bekomme ebenfalls den Fehler. Ich habe alles gemacht, was Pico vorgeschlagen hat. Läuft nur leider trotzdem nicht.

Welche nodejs und npm Versionen sind da installiert?

NPM 10.5.0
Node 18.20.2

Hab mit Dockware noch nicht gearbeitet, gibt es da ggf. die Möglichkeit, andere Versionen zu installieren?

Ja, genau das habe ich probiert. Man kann behaupten, dass die Versionen 6.5.8.8, 6.5.8.9 und 6.5.8.10 kaputt sind. Davor und danach geht es zum Glück. Damit kann ich arbeiten.
Schon ein übles System, wenn man nicht herausfinden, kann, woran es genau liegt.
Aber gut, wir reden über ein System, bei dem selbst in der Minor-Version 6 noch Validator-Fehler nicht richtig im Admin-Bereich angezeigt werden, wenn man einen Artikel speichert.
Vielen Dank für deine Hilfe!

Ich hab mich damals ein wenig durch den Code dafür gewühlt, aber das ist sehr komplex und eigentlich überhaupt nicht meine Baustelle, daher war ich froh, das es mit einer anderen Version lief.

Anpassen der node version in Docker: Switch Node Version | dockware