
# 1 用户场景
随着客户个性化需求的日益增长,自定义控件扮演着越来越重要的角色。可以说,自定义控件是苍穹扩展的重要手段。目前,各业务项目组或者客户伙伴基本上都有自己的自定义控件,与之投入开发的人后端开发居多,导致开发过程中很少会自己分析并解决问题,因此本文将针对一些基本、常见的问题提出解决方案。
# 2 功能介绍
将教大家如何排查最基本、最常见的开发过程中遇到的自定义控件相关问题(报错等)
遇到问题可以先看浏览器控制台是否有报错
首先,动动手指头,按键盘“**F12**”将浏览器的 **开发者工具** 调出来(一般推荐chrome浏览器),点击并切换到该工具的"Console"面板

可以说,大多数的错误都可以在这里看到,但是有一些比较棘手的问题,可能需要由平台的老师来解决。
那么接下来,针对控制台的报错,将提供对应的分析以及解决问题的办法。
## 2.1 404错误
这个错误在控制台里类似提示效果如下(注意"**404**"关键字):

从报错信息中可以看出来,是自定义控件的index.js文件没有找到。没有找到资源文件的原因基本是以下几点:
**1、请求路径错误**
以下内容包含正确和错误的路径示例(以及错误的原因):
错误路径:
[https://feature.kingdee.com:2024/baseline_a/isv/kdtest/cq/](https://feature.kingdee.com:2024/baseline_a/isv/kdtest/cq/undefined/index.js?v=1)[undefined](https://feature.kingdee.com:2024/baseline_a/isv/kdtest/cq/undefined/index.js?v=1)[/index.js?v=1](https://feature.kingdee.com:2024/baseline_a/isv/kdtest/cq/undefined/index.js?v=1)(路径中有undefined)
[https://feature.kingdee.com:2024/baseline_a/isv/kdtest/helloworld/index.js?v=1](https://feature.kingdee.com:2024/baseline_a/isv/kdtest/helloworld/index.js?v=1)(路径拼接错误,缺少isvId、moduleId、schemaId其中一个或者多个)
正确路径:
[https://feature.kingdee.com:2024/baseline_a/isv/kdtest/cq/helloworld/index.js?v=1](https://feature.kingdee.com:2024/baseline_a/isv/kdtest/cq/helloworld/index.js?v=1)
[https://feature.kingdee.com:2024/baseline_a/isv/kdtest/fi/helloworld/index.js?v=1](https://feature.kingdee.com:2024/baseline_a/isv/kdtest/fi/helloworld/index.js?v=1)
**2、文件不在isv目录下所在领域对应的控件方案文件夹里**
如果是第一个原因造成的,可以直接联系总部前端技术服务部:何剑航
如果是第二个原因造成的,你可以按照下面思路排查:
① 如果是以上传zip包方式上传控件方案的,检查zip包的目录结构。注意,打包时,index.js一定是在包的根目录下的,即打开zip包第一眼看到的一定要有**index.js**;
② 如果按照第一点排查解决之后还是有问题,你就需要检查一下上传成功后,静态资源目录下有没有控件方案及其资源,一般在 **webapp/isv/开发商标识/领域标识/控件方案id/** 下(非zip包上传控件方案方式,即本地开发方式,此排查方式也适用);
③ 如果按照第二点排查解决之后还是有问题,那么需要检查一下Nginx的配置了,也有可能是代理的资源路径不正确;
**3、没有预置脚本预插数据(如果不知道怎么写预置脚本可以询问部门架构师)**
如果按照以上还没有找到问题,请联系前端技术服务部:何剑航
## 2.2 register报错
对应错误信息在浏览器控制台里是这样的:

此问题是**index.js**代码中**KDApi.register**的第一个参数和新建方案时填写的方案id不一致导致的,可以检查一下这两个地方填写的数据:
1、自定义控件的"**index.js**"文件中"**KDApi.resiger**"接口调用的"**第一个参数**"

2、设计器中创建的自定义控件"**控件方案**"其"**方案id**"

## 2.3 语法错误
犯了这种错很不应该,因为完全就是开发过程中的错误,最常见的错误可以是以下几种:
**1、未声明变量直接用(类似)**

**2、代码缺胳膊瘸腿(括号没闭合、变量声明不规范**)

**3、使用ES6语法(目前ES6语法在IE浏览器下普遍不支持的)**
**4、移动端,使用Jquery报错(开发文档已经说明移动端默认不引入jquery,如果需要可自行通过KDApi.loadFile引入或者使用扩展js引入)**

## 2.4 没有报错但就是啥也没有
一定要记住,出现这个问题的
前提是没有404错误、register错误、语法错误!!!
前提是没有404错误、register错误、语法错误!!!
前提是没有404错误、register错误、语法错误!!!
重要的事情说三遍!不要因为看了此小节标题直接跳过前面几个小节!
这种错误就是在UI渲染时出现了问题,除了React或者Vue写法的自定义控件外,有可能在这个地方出现问题:
![image.webp](/download/010010089a0d1d3e43ba8eb90af535f280e