遇到 TypeError: Illegal constructor at initializer 这个错误通常是因为在 JavaScript 中尝试使用不允许的方式初始化一个类实例或某些类型的对象。这个问题可能与 Cocos Creator 的组件系统或一些特定的 API 使用方式有关。
常见原因和解决方法
- 不正确的构造函数使用 :
- 如果你在一个类中直接调用了一个不允许的构造函数,可能会导致这个错误。确保你没有在属性声明中直接创建一个类的实例。
javascriptCopy Code
// 错误示例
@property(SomeClass)
someProperty = new SomeClass(); // 这样直接初始化是不允许的
解决方法 :只声明属性,然后在构造函数或其他方法中初始化它。
javascriptCopy Code
@property(SomeClass)
someProperty = null; // 声明属性
onLoad() {
this.someProperty = new SomeClass(); // 在适当的生命周期方法中初始化
}
- 使用了不支持的类型 :
- 确保所使用的类型是合法的 Cocos Creator 类型。Cocos Creator 的
@property装饰器支持的类型包括cc.Integer,cc.Float,cc.String,cc.Boolean,cc.Node,cc.Prefab, 等。
- 属性初始化顺序问题 :
- 有时,如果在类的属性中依赖其他属性的值来初始化,会导致构造顺序问题。确保属性的初始化是独立的,或者在
onLoad或start方法中进行。
- 检查 Cocos Creator 版本 :
- 某些版本的 Cocos Creator 可能会有 bug 或者不同的行为,确认你使用的是最新版本或查看文档中的变更日志。
总结
如果你仍然遇到问题,请提供更详细的代码示例或上下文,以便我可以更具体地帮助你。希望这些建议能帮助你解决问题!
删除了一些代码后,就好了。也没搞懂是什么原因。
@property({type: Node, visible: true})
_txtNode: Array<Node> = [];
Node未从"cc"中导入,会报这个错 
1赞

下面这个才是cocos的Node。
正解,Node不导入cc的情况下,也不会报错
