如何修复Drupal中TwigNodeTrans的options节点不存在错误
解决Drupal 8 + Ddev环境下Twig SyntaxError问题
这种Node "options" does not exist for Node "Drupal\Core\Template\TwigNodeTrans"的错误,我之前帮朋友排查过,大概率是Twig版本和Drupal 8不兼容导致的——Drupal 8对Twig的版本有严格限制,不能用Twig 3.x(语法和API变动太大),而如果你的composer依赖拉到了高版本Twig,就会触发这个模板编译错误。
下面是具体的解决步骤:
1. 先确认Twig版本是否超标
进入你的ddev容器,检查当前安装的Twig版本:
ddev ssh grep -A 5 -B 5 "twig/twig" composer.lock
如果输出里显示Twig版本是3.x.x,那就是版本问题了,Drupal 8.9.x要求Twig版本在~1.38|~2.4范围内。
2. 强制降级Twig版本
退出容器后,在项目根目录修改composer.json文件,在require区块里添加或修改Twig的版本约束:
"require": { // 其他依赖... "twig/twig": "~2.15" }
然后回到容器里执行依赖更新:
ddev ssh composer update twig/twig --with-dependencies
更新完成后,一定要清除Drupal缓存:
vendor/bin/drush cr
3. 重置依赖(如果上面的方法没生效)
如果还是有问题,可以彻底重置composer依赖:
ddev ssh rm -rf composer.lock vendor composer install
这会让composer完全按照Drupal 8的核心依赖要求重新安装所有包,确保Twig版本符合要求。
额外提醒
Drupal 8已经停止官方维护了,安全风险很高,建议尽快升级到Drupal 9或10。如果必须继续使用Drupal 8,一定要严格控制第三方模块和核心依赖的版本,避免拉到不兼容的包。
内容的提问来源于stack exchange,提问作者Missaka Iddamalgoda
相关产品推荐
相关产品推荐

