cocos creator3.8.3中控制台提示错误: TypeError: Illegal constructor at initializer


删除了项目中的 temp,library的文件夹后,重新启动也还是会有报错提示。

遇到 TypeError: Illegal constructor at initializer 这个错误通常是因为在 JavaScript 中尝试使用不允许的方式初始化一个类实例或某些类型的对象。这个问题可能与 Cocos Creator 的组件系统或一些特定的 API 使用方式有关。

常见原因和解决方法

  1. 不正确的构造函数使用
  • 如果你在一个类中直接调用了一个不允许的构造函数,可能会导致这个错误。确保你没有在属性声明中直接创建一个类的实例。

javascriptCopy Code

// 错误示例
@property(SomeClass) 
someProperty = new SomeClass(); // 这样直接初始化是不允许的

解决方法 :只声明属性,然后在构造函数或其他方法中初始化它。

javascriptCopy Code

@property(SomeClass) 
someProperty = null; // 声明属性

onLoad() {
    this.someProperty = new SomeClass(); // 在适当的生命周期方法中初始化
}
  1. 使用了不支持的类型
  • 确保所使用的类型是合法的 Cocos Creator 类型。Cocos Creator 的 @property 装饰器支持的类型包括 cc.Integer , cc.Float , cc.String , cc.Boolean , cc.Node , cc.Prefab , 等。
  1. 属性初始化顺序问题
  • 有时,如果在类的属性中依赖其他属性的值来初始化,会导致构造顺序问题。确保属性的初始化是独立的,或者在 onLoadstart 方法中进行。
  1. 检查 Cocos Creator 版本
  • 某些版本的 Cocos Creator 可能会有 bug 或者不同的行为,确认你使用的是最新版本或查看文档中的变更日志。

总结

如果你仍然遇到问题,请提供更详细的代码示例或上下文,以便我可以更具体地帮助你。希望这些建议能帮助你解决问题!

删除了一些代码后,就好了。也没搞懂是什么原因。

@property({type: Node, visible: true})
_txtNode: Array<Node> = [];

Node未从"cc"中导入,会报这个错 :rofl:

1赞

image
下面这个才是cocos的Node。

正解,Node不导入cc的情况下,也不会报错