Drupal项目致命错误求助:TokenizeAreaPluginBase命名冲突
解决Drupal中"Cannot use ... because the name is already in use"致命错误
错误根源
这个错误的核心是:在/var/www/html/golden/absolute_you/web/modules/contrib/views_add_button/src/Plugin/views/area/ViewsAddButtonArea.php第12行,导入Drupal\views\Plugin\views\area\TokenizeAreaPluginBase并将其命名为TokenizeAreaPluginBase时,该类名已经被当前文件内的其他导入语句占用,导致命名冲突。
修复方案
1. 排查重复导入
打开上述PHP文件,查看所有use开头的导入语句,确认是否存在重复导入TokenizeAreaPluginBase的情况。比如可能出现:
use Drupal\views\Plugin\views\area\TokenizeAreaPluginBase; use Drupal\some_other_module\Plugin\views\area\TokenizeAreaPluginBase;
如果是这种情况,删掉其中一条重复的导入语句即可。
2. 给冲突类设置别名
如果确实需要同时导入两个同名类(这种场景不多,但有可能发生),可以给其中一个类指定不同的别名,避免命名冲突。比如:
// 把原导入语句改成带别名的形式 use Drupal\views\Plugin\views\area\TokenizeAreaPluginBase as ViewsTokenizeBase;
之后在文件里用到这个类的地方,都替换成新的别名ViewsTokenizeBase。
3. 检查模块兼容性
如果上面的操作没解决问题,大概率是模块兼容性问题:
- 把
views_add_button模块更新到最新稳定版本; - 临时禁用其他可能和Views模块交互的自定义/ contrib模块,排查是否是模块间的冲突;
- 确认当前Drupal版本和
views_add_button模块的支持版本匹配。
4. 清理缓存
修改代码后,必须清理Drupal缓存——可以用Drush命令drush cr,或者登录后台手动清除缓存,确保修改生效。
内容的提问来源于stack exchange,提问作者Vinod D
相关产品推荐
相关产品推荐

