哪个@angular/*包是bug的来源?
platform-browser
这是个回归吗?
是的
描述
最近将一个从版本6升级到16的angular项目进行了更新。升级后一切正常,但我在控制台看到了一条带有消息
ERROR TypeError: n.setAttribute is not a function
的错误日志。我成功地调试了这个问题,发现它来自DefaultDomRenderer2的setAttribute函数,当元素类型为#comment
、
或
时。
请提供一个最小复现bug的链接
https://github.com/magixian/applyzer
请提供您看到的异常或错误
ERROR TypeError: n.setAttribute is not a function
请提供您发现此bug的环境(运行ng version
)
Angular CLI: 16.2.11
Node: 20.9.0
Package Manager: npm 10.1.0
OS Win x64
Angular: 16.2.11
还有其他信息吗?
- 无响应*
4条答案
按热度按时间fv2wmkja1#
请提供一个可运行的复现示例,或者至少在非优化构建中的堆栈跟踪。没有复现我们无法提供任何帮助。
kqqjbcuj2#
请提供一个可运行的复现示例,或者至少在非优化构建中的堆栈跟踪。没有复现我们将无法提供任何帮助。
我已经成功地在https://github.com/magixian/applyzer这个小型应用程序上复现了这个bug(也在主要问题信息中添加了)。
在这个复现bug的过程中,我似乎已经找到了bug的来源:https://github.com/magixian/applyzer/blob/main/src/app/block-builder/block-builder.component.html#L2。这个属性在我们的应用中似乎并不是必需的,所以可以毫无问题地删除它。然而,只是为了说明,在之前的版本中这都是正常工作的。
我会暂时保持这个问题开放,以防万一需要对此情况进行审查。
yv5phkfx3#
A
ng-container
将在DOM中呈现为 Comment Node ,并且不提供setAttribute函数。你应该使用div而不是ng-container,或者将[attr.data-index]移动到HTML元素中。bihw5rsg4#
将以下文本内容标记为错误,因为这种情况应该由编译器检测并在编译过程中报告,而无需涉及任何运行时。
attr.
绑定语法清楚地表明它与绑定属性有关,我们知道<ng-container>
上没有属性,因此我们可以静态地检测到这种情况。