Hallo,
beim update von shopware 6.0 auf 6.1 musste ich die Struktur einiger Plugins anpassen.
Nun ist aber das Problem, dass der code der hier gespeichert ist plugin root/src/Resources/app/storefront/dist/storefront/js/plugin-name.js bei der all.js zu problemen führt, und auch deinstallieren und neuinstallieren nicht klappt.
Zuvor war die datei in plugin root/src/Resources/dist/storefront/js/plugin-name.js
Ich habe leider auch keine Lösung aktuell dafür, aber wir haben das gleiche Problem mit exakt der gleichen Fehlermeldung und kommen nicht weiter!
In der Entwicklungsumgebung klappt alles einwandfrei, im Livesystem auf einem NGINX Debian Server nicht mehr. Es scheint als würde beim kompilieren via webpack irgendwas fehlen? Es gibt einen github issue hierzu, aber die Lösung (bzw es gibt keine dort) hilft uns nicht:
Wir haben das problem auch bei einem eigenen Plugin, das gebuildete JS beißt sich mit dem auf dem Server concatenaten JS und wir binden die node_modules korrekt ein…
Wie kann man das vermeiden? Es muss doch möglich sein, eigene node_modules in der Entwicklung zu verwenden, die korrekt im dev-mode gebundlet werden, sodass es keine Interferenzen gibt?
So sieht unser Plugin import aus:
Die Fehlermeldung im prod ist die gleiche wie oben:
Uncaught TypeError: Cannot read property ‚call‘ of undefined" in all. js on line…
If you compile your plugin JS locally using the Shopware Storefront webpack configuration, it detects that you have a folder called node_modules inside your plugin:
It doesn’t matter if you use either ../../node_modules or if you add it as a resolve alias in your own plugins storefront/build/webpack.config.js like it’s described in the documentation.
The webpack config of the storefront will match node_modules and extract all those modules into the vendors.js, vendor-node.js and the vendor-shared.js in the dist folder of the Storefront itself.
Which means your plugin only works with this modified JS of the Storefront, which is practically impossible as you can’t force any other user to overwrite the files vendor/shopware/storefront/Resources/app/storefront/dist/js/vendors.js (and the others) when your plugin is being installed.