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

开启区块缓存时出现$.cookie is not a function错误求助

我之前碰到过好几个Drupal 7用户遇到这个问题,核心症结就是区块缓存搞的鬼——它把webform依赖的jQuery Cookie插件给“漏掉”加载了,导致form.js执行到调用$.cookie的代码时直接报错。结合你缩小到区块中webform的排查结果,给你几个针对性的解决步骤:

1. 先验证缓存与依赖的关联

先临时把出问题的区块缓存设置改成**“不缓存”**(在区块编辑页面的“缓存设置”里调整),然后清除全站缓存刷新页面。如果错误消失,那百分百是缓存没正确处理JS依赖导致的。

2. 强制确保jQuery Cookie插件优先加载

Drupal 7的form.js依赖jQuery Cookie插件来处理表单临时数据存储,但缓存机制可能没识别到webform区块对这个插件的依赖。你可以通过自定义模块的hook_js_alter()来强制调整加载顺序:

function YOUR_CUSTOM_MODULE_js_alter(&$js) {
  // 替换成你实际的jQuery Cookie插件路径
  $cookie_js_path = 'sites/all/libraries/jquery.cookie/jquery.cookie.js';
  if (isset($js['misc/form.js']) && isset($js[$cookie_js_path])) {
    // 让cookie插件比form.js先加载(权重值越小越先加载)
    $js[$cookie_js_path]['weight'] = -10;
    $js['misc/form.js']['weight'] = -9;
  }
}

写完代码后别忘了启用自定义模块,再清一遍缓存。

3. 调整区块缓存策略

如果不想完全禁用区块缓存,可以试试把缓存策略改成**“基于用户角色缓存”或者“基于上下文缓存”**,这样Drupal会根据不同用户的上下文加载对应的资源,减少依赖丢失的概率。

4. 检查webform与模块版本

确保你的webform模块是Drupal 7兼容的最新稳定版本,有些旧版本的webform在区块缓存场景下确实存在依赖处理的bug。另外,检查jQuery Cookie插件的版本是否和Drupal 7的jQuery 1.7.2兼容(建议用1.4.x版本的jquery.cookie,兼容性最好)。

最后必做:清除所有缓存

不管你改了哪项设置,一定要去Drupal后台的“性能”页面,点击“清除所有缓存”,包括页面缓存、区块缓存、JS/CSS聚合缓存,避免旧的缓存文件干扰新的配置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 03:21:31