Shopware 6.5从插件转App开发:JS扩展未生效问题咨询
插件转App开发后JS未加载的核心原因
1. 资源加载逻辑彻底变更
插件模式下,Resources/public/administration/js下的压缩JS会被Shopware自动注入后台;但App模式完全不识别这个目录,所有前端代码必须通过Resources/app/administration/src/main.js作为入口,以ES模块化方式引入,旧插件的public目录资源不会被加载。
2. 组件重写的注册要求更严格
插件里用Component.override可以直接生效,但App模式下要满足两个条件:
sw-product-list-override/index.js的代码必须正确导出,且main.js的引入路径完全正确(注意大小写、层级,比如是否多写/少写了目录层级)- 重写操作必须在
sw-product-list组件完成注册后执行,App的前端基于模块化打包,依赖顺序错误会导致override无效
3. 构建与激活流程不同
- 执行
build-administration.sh后,App的前端产物会打包到专属目录,而非插件的public目录,需要重新卸载并重新安装激活App,才能让新的前端资源生效,仅刷新后台页面没用 - App的构建流程是将
src目录下的源码打包成符合Shopware App规范的资源,旧插件的构建产物无法被App系统识别
4. 模板引入路径规则变化
插件里的twig模板相对路径写法在App模式下不适用,必须保证模板文件与组件代码在同一目录,且在override时的template路径要基于ES模块的导入规则来写,比如用./sw-product-list-override.twig这种相对当前index.js的路径
内容的提问来源于stack exchange,提问作者Codixio
相关产品推荐
相关产品推荐

