You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Shopware 6覆写现有JavaScript插件失效问题排查

Shopware 6 覆写CookiePermission插件未执行的排查方案

以下是几个可能导致你的覆写代码未执行的原因及解决办法:

1. 缺失依赖导入导致报错中断执行

你的my-cookie-permission.plugin.js中使用了CookieStorage但未导入该模块,这会直接抛出undefined错误,中断init方法执行,自然不会打印test2。

修正代码:在插件文件顶部添加导入语句

import CookiePermissionPlugin from 'src/plugin/cookie/cookie-permission.plugin';
import CookieStorage from 'src/helper/storage/cookie-storage.helper'; // 新增CookieStorage导入

export default class MyCookiePermissionPlugin extends CookiePermissionPlugin {
    init() {
        console.log('test2');
        CookieStorage.setItem(this.options.cookieName, '');
        super.init();
    }

    _hideCookieBar() {
        if (confirm('Do you want to hide the cookie bar?')) {
            super._hideCookieBar();
        }
    }
}

2. 覆写时机或选择器参数问题

  • 若你的main.js加载时机早于原生CookiePermission插件的注册,覆写操作会失效。需确保你的代码在原生插件注册后执行,可通过调整主题/插件的资源加载顺序实现。
  • 覆写时重复指定选择器[data-cookie-permission]可能导致匹配冲突,原生插件已绑定该选择器,覆写时无需重复传入。

修正main.js:

import MyCookiePermissionPlugin from './plugin/my-cookie-permission/my-cookie-permission.plugin';

const PluginManager = window.PluginManager;
// 移除第三个选择器参数,直接覆写插件逻辑
PluginManager.override('CookiePermission', MyCookiePermissionPlugin);
console.log('test1');

3. 缓存未彻底清理

即使执行了构建操作,Shopware的服务器缓存或浏览器缓存仍可能加载旧代码:

  • 执行Shopware缓存清理命令:bin/console cache:clear
  • 浏览器强制刷新(Ctrl+Shift+R),确保加载最新构建文件

4. 原生插件初始化逻辑拦截

原生CookiePermission的init方法会检查Cookie是否存在,若之前的Cookie未彻底清除(比如浏览器本地存储残留),可能跳过初始化。需确保:

  • 彻底清除浏览器所有Cookie(包括会话Cookie)
  • 检查页面DOM中是否存在带有data-cookie-permission属性的元素,确认插件绑定目标存在

内容的提问来源于stack exchange,提问作者Abenil

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 11:45:04