错误码参考

Qingkuai 的编译器和运行时可能会抛出附带错误码的诊断信息,帮助开发者快速定位问题。本节列出当前版本内置错误码及其含义,便于查阅与排查。错误码按功能类型分类,编号规则如下:

通过错误码快速查找具体信息,可提升排错效率并更好地理解框架的行为。


编译错误

错误码 描述
1001 空插值块
1002 意料之外的字符
1003 未闭合的插值块
1004 以结束标签开头(如 </div> 前不存在与之匹配的 <div>
1005 插值属性缺少名称(如仅写 !@#&
1006 静态属性值未使用单引号或双引号包裹
1007 插值属性值未使用花括号包裹
1008 静态属性值未闭合
1009 标签未闭合(包括开始标签、结束标签或注释标签)
1010 嵌入语言标签未在模板顶层使用
1011 嵌入脚本块超出限制(组件文件最多一个)
1012 标签缺少匹配的结束标签
1013 标签不能作为自闭合标签使用(如 <div />
1014 使用了组件文件中不允许的标签
1015 模板结构非法(如 <div> 嵌套在 <p> 内)
1016 属性格式非法
1017 使用了框架保留的标识符格式(以 __qk__ 开头的标识符)
1018 不支持的顶层 await 表达式
1019 嵌入脚本块中不支持以下导出形式:export =、默认导出、再导出、命名空间导出、类型导出
1020 顶级作用域中重定义编译器内建标识符
1021 编译器内建方法使用位置或调用形式错误
1022 标识符不可重声明(与别名或衍生值标记冲突)
1023 响应式标记方式冲突(如 $ 简写与其他标记方式混用)
1024 alias 内建方法参数非法(必须且只能传入一个可写目标)
1025 alias 解构声明中包含不允许的模式
1026 指令冲突(不能在同一标签上共存)
1027 指令缺少必要的值
1028 属性重复或解析后冲突(含静态/动态/事件/引用属性冲突)
1029 表达式非法
1030 标签不接受当前属性类型(如错误的引用属性或事件属性)
1031 缺少前置指令(如 #elif#else#then#catch 等)
1032 上下文模式(context pattern)非法
1033 未识别的指令
1034 上下文模式为空(未声明任何绑定标识符)
1035 #html 指令的标签必须且只能有一个文本子节点
1036 #slot 指令使用位置非法(仅允许组件节点的一级子元素)
1037 指令解构绑定模式数量超限(如 #for#then 等)
1038 #slot 指令缺少合法插槽名(from 后必须为字符串字面量)
1039 <slot> 标签的 name 属性必须是静态值
1040 #target 指令使用位置非法(组件一级子元素上会导致目标歧义)
1041 期望表达式
1042 期望字符串字面量
1043 #key 指令只能与 #for 同时使用
1044 期望事件标志名
1045 未识别的事件标志
1046 事件标志冲突
1047 标签上的引用属性不合法(不在允许列表内)
1048 引用属性值非法(必须是标识符或成员表达式)
1049 省略写法的特殊属性名非法(无法转换为合法标识符)
1050 <slot>name 属性重复
1051 同一组件内重复分配到同名插槽
1052 嵌入脚本块不支持 TypeScript 命名空间声明
1053 alias 不能用于独立标识符别名化
1054 编译器内建方法不能用于 using / await using 声明
1055 不允许嵌套 <slot>
1056 Promise 块中 #then#catch 指令重复
1057 组件名称非法(无法转换为合法 JS 标识符或成员表达式)
1058 #html 指令不能用于组件或 <slot> 标签
1059 指定内建方法不支持扩展参数(spread element)
1060 元素标签名非法
1061 编译器内建方法不能在模板中使用
1062 响应式模式冲突(同一标签同时声明 reactiveshallow
1063 组件标签上的泛型参数未闭合
1064 组件标签泛型参数只能在嵌入脚本类型为 TypeScript 时使用
1065 成员表达式形式的组件标签不允许使用连字符
1066 自闭合嵌入样式标签必须提供 src 属性
1067 src 属性的嵌入样式标签不能包含内联样式内容
1068 嵌入样式标签上的 src 属性值不能为空
1069 #scope 指令只能用于组件上
1070 禁用 allowConstReactive 编译选项时,不允许用 reactive/shallow 标记 const 声明
1071 defaults 内建方法在嵌入脚本块中只能调用一次

编译警告

错误码 描述
9001 值恒定不变,响应式标记冗余(将按原始值处理)
9002 顶级作用域标识符在特定作用域中可能被覆盖
9003 混用两种衍生响应式值声明语法(不推荐)
9004 衍生响应式值为只读,使用可变声明冗余(建议改为 const
9005 对字面量 const 进行 raw 标记是冗余的
9006 指令不需要值,提供的值会被忽略
9007 布尔属性提供了冗余值,冗余值会被忽略
9008 #html 指令在无值且静态内容场景下无实际作用
9009 组件事件监听器上的事件标志无效,会被忽略
9010 在非键盘事件上使用键盘事件标志无效,会被忽略
9011 事件标志重复,重复项会被忽略
9012 缺少必要属性(如动态属性、引用属性或事件监听器)的 qk:spread 标签是冗余的
9013 #scope 指令在此处不必要,因为该组件已有实际祖先元素
9014 内建方法参数超出预期,多余参数会被忽略
9015 #scope 指令在当前组件没有作用域样式时无效

运行时错误

错误码 描述
2001 指定用途(如 #await)收到的值不是 Promise
2002 #for 指令值不可遍历
2003 #key 指令值存在重复项
2004 超出最大递归更新深度(常见于异步副作用/监视器中的递归更新)
2005 目标元素无效(不是合法 Element,或无法通过选择器获取)
2006 &group 或多选 <select>&value 属性值必须是数组或集合
2007 无法渲染组件:给定值既不是组件函数,也不是解析为组件函数的 Promise

运行时警告

错误码 描述
8001 执行副作用/监视器时未收集到任何响应式依赖,该副作用会被销毁
8002 对只读或无效目标执行赋值操作,赋值会被忽略
8003 所属组件销毁后仍尝试创建内容(常见于组件移除后异步回调才执行创建子组件或注册监视器/副作用),该创建已被忽略

语言服务错误

错误码 描述
3001 包含泛型参数的外部导入类型不能作为全局类型使用(Props、Refs)
3002 (TypeScript) 全局类型声明不属于对象类型(如基本类型、联合类型等)
3003 依赖 "qingkuai" 未找到,请确保已安装且可解析

语言服务警告

错误码 描述
7001 (JavaScript) 通过 JSDoc 声明的全局类型声明不属于对象类型(如基本类型、联合类型等)
7002 @keyframes 规则不会被添加作用域,建议定义在外部样式表中并从应用入口文件导入

在github上编辑此页面