PrestaShop 1.7.6.1商品增/编辑页报错:this._addClass is not a function
解决PrestaShop 1.7.6.1商品添加/编辑页JS报错问题
针对你升级后遇到的main.bundle.js:221 Uncaught TypeError: this._addClass is not a function报错,结合你尝试过的操作,我整理了几个针对性的排查和解决方向:
1. 优先排查缓存与资源加载完整性
这个报错的核心是jQuery UI的ui.widget组件未正确加载——_addClass是该组件提供的方法,一旦加载失败就会触发这个错误。你可以先做这些操作:
- 清空PrestaShop后台缓存:进入「高级参数」→「性能」,点击「清除缓存」按钮,同时勾选清除Smarty缓存和编译文件;
- 强制刷新浏览器缓存:按
Ctrl+Shift+R重新加载商品编辑页面,避免浏览器使用旧的缓存文件; - 检查网络请求:打开浏览器控制台的「网络」标签,筛选JS文件,确认
jquery.ui.widget.min.js、jquery.ui.mouse.min.js、jquery.ui.slider.min.js这几个文件是否成功加载(状态码为200),如果有404或加载失败,说明文件缺失或路径错误,需要恢复对应的文件。
2. 修复Media.php的滑块配置而非直接注释
直接注释ui.slider的配置会导致依赖它的其他功能失效,我们可以调整配置参数来解决问题:
打开classes/Media.php,找到第46行的滑块配置,尝试修改theme参数为false(避免加载主题自定义的UI样式,防止冲突):
'ui.slider' => array('fileName' => 'jquery.ui.slider.min.js', 'dependencies' => array('ui.core', 'ui.widget', 'ui.mouse'), 'theme' => false)
修改后保存并清缓存,测试商品编辑页是否恢复正常。如果还是不行,可以尝试调整依赖顺序,比如把ui.widget放在依赖数组的第一位:
'dependencies' => array('ui.widget', 'ui.core', 'ui.mouse')
3. 排查潜在的JS冲突(即使禁用了第三方模块)
有时候即使禁用了第三方模块,主题的后台自定义JS也可能和PrestaShop原生的jQuery UI冲突:
- 临时切换到PrestaShop默认的
Classic主题,测试商品编辑页是否正常; - 如果切换主题后问题解决,说明当前使用的主题存在后台JS冲突,需要检查主题目录下的
admin-dev/或js/admin/文件夹中的自定义脚本,看看是否有覆盖或修改jQuery UI的代码。
4. 替换官方原生的jQuery UI文件
如果上述方法都无效,可能是PrestaShop自带的jQuery UI文件损坏或版本异常:
- 从PrestaShop官方1.7.6.1安装包中提取
js/jquery/ui/目录下的所有文件; - 替换到你的网站对应目录(
你的店铺根目录/js/jquery/ui/); - 再次清空缓存并测试页面。
5. 检查PHP环境兼容性
虽然PHP 7.0.33符合PrestaShop 1.7.6.1的要求,但可以检查是否有必要的PHP扩展缺失:
- 进入PrestaShop后台「高级参数」→「信息」,查看服务器配置部分是否有红色警告;
- 重点确认
mbstring、json、zip这些扩展是否正常启用,缺失扩展可能导致后台JS资源生成异常。
内容的提问来源于stack exchange,提问作者YVGorshkov
相关产品推荐
相关产品推荐

