自定义事件
- 如何调试自定义事件?
A:在代码中使用 debugger 打断点,打开浏览器开发者工具:
250px|700px|reset
- 在数据表格事件的点击行中,添加执行自定义 JS 代码动作,当点击行时,如何获取点击行的数据?
A:通过如下代码可以获取点击行数据。
250px|700px|reset
- 在页面中,使用自定义事件,如何在自定义事件中设置页面变量?
A:在自定义事件中,存在着context全局对象,通过这个对象能够设置页面变量,具体调用方式如下:
await context.page.setPageVar(varApiName, value)
- 如何通过自定义页面事件刷新表格数据?
A:
- 代码实现如下:
// 按钮的自定义事件实现如下:
const newUniqueID = `${Date.now()}`;
// 设置页面变量后,所有依赖此页面变量的组件会刷新
context.page.setPageVar('var_15dpf9k', newUniqueID);
表格组件的过滤条件配置如下:
250px|700px|reset
- 效果图:
250px|700px|reset
- 在低代码中部署了云函数,在哪些地方可以使用?
A:
- 在页面事件中的自定义代码中如下调用云函数
kunlun.dataService.kFunction(api_name).invoke();
250px|700px|reset
- 在流程管理中的工作流中通过 Node.js 节点调用云函数
250px|700px|reset
调用代码如下:
context.function(api_name).invoke();
- 在自定义组件中引入 data-service 调用云函数,代码如下:
import {
kFunction, // 云函数
} from '@kunlun-dx/data-service';
await kFunction(api_name).invoke();
- 如何获取标签页的值,用于创建自定义事件
A:通过如下方式回去标签页的值
const urlParams = new URLSearchParams(window.location.search);
const activeKey = urlParams.get('tabld')
自定义组件
- 数组遍历渲染报错:[Cannot read properties of undefined (reading 'getStackAddendum')]
250px|700px|reset
A:React17 中 list item 中必须加 key 属性,否则会报这个错
如果使用@kunlun-dx/design中或者使用antd3.x中的Form.Item组件,而且你代码里加上了key属性,但还是出现了上述错误,需要在Form.Item外层增加Fragment节点,对该节点添加key属性。
解决方式如下
250px|700px|reset
- 开发组件时 ts 报错:Type '{ children: Element; }' has no properties in common with type 'IntrinsicAttributes && xxProps'
250px|700px|reset
A:可能是 @types/react 版本过高导致的。可以执行 npm ls @types/react 查看项目中是否安装了版本大于 18 的 @types/react,如果有,可以在 package.json 的 resolution 中添加 "@types/react": "^17",重新安装依赖后即可解决
- 在 Windows 上执行 ae component dev 命令时可能报错
250px|700px|reset
A:此时只需要在 dev 命令前执行 set-ExecutionPolicy RemoteSigned 即可:
set-ExecutionPolicy RemoteSigned
ae component dev
- 自定义组件中如何区分线上和沙箱环境?
A:可以通过截图中的 type 区分
250px|700px|reset
- 自定义组件是否支持配置标准组件中的图标样式?
A:不支持
- 如何在自定义组件中使用路由跳转?
A:目前暂无相关实践案例,同时不建议使用该方式,可能会出现未知问题。建议使用官方导航,或重新评估需求,以其它方式满足相关需求。
- 自定义组件如何使用 @byted-apaas/server-sdk-node
CLI(命令行工具)
- 登录时租户名称(Tenant Name)是什么?
- ae project clone 时包的命名空间(namespace)是什么?
A:在应用管理界面可以获取:
250px|700px|reset
- 推荐使用的 CLI 和 @kunlun-dx/sdk 的版本是什么?
- 通过 CLI 工作 push 项目后,系统都做了哪些事情?
A:
目前的流程是:
Step1: 先 pull 远端的组件源码与本地进行 merge
Step2: merge 后的源码打包 push 到远端,并触发构建及发布的流程。
- 在 mac/windows 中如何进入终端?
A:
在 mac 中
Step1:进入启动台,在上方的搜索中输入终端
250px|700px|reset
250px|700px|reset
Step2: 点击终端图标,进入终端
250px|700px|reset
在 windows 中
方法一:按下快捷键win+R,输入cmd,回车
方法二:在某个目录中点击鼠标右键打开命令窗口
250px|700px|reset
- 安装 CLI 时报以下错误 ,Error: EACCES:permission denied,mkdir '/usr/local/lib/node_modules/@kunlun-dx'
250px|700px|reset
A:是文件系统权限问题,用 sudo npm install -g @byted-apaas/cli 命令安装即可
- 安装 CLI 时报以下错误,reason: certificate has expired
250px|700px|reset
其他同类问题:
- ae component create 创建组件失败,DX_CLI_41062, connect timeout
- 升级 CLI 时报错: ERESOLVE unable to resolve dependency tree
250px|700px|reset
A:在命令后添加 --legacy-peer-deps 参数即可解决。详情参见:
- 命令行自动补全不能正常工作
A: 在安装 CLI 后,系统会自动对 bash/zsh 终端进行配置完成自动补全的脚本注入。
不能工作可能是因为脚本注入失败, 可以尝试运行 ae completion setup 来进行主动注入,再根据命令返回结果进一步排查问题。
可能的原因有:
- EACCES Permission denied, open /Users/xxx/.zshrc: zshrc 系统文件权限问题
需要执行 sudo ae completion setup
250px|700px|reset
- 在 Windows 10 系统下, 执行 ae component dev 进行自定义组件调试时,显示报错进而无法进行调试:
报错信息: DX_CLI_41031 Error: EPERM: operation not permitted, symlink 'C:\Users\xxx\node_modules' -> 'C:\Users\xxx\.kldx\cache\xxx\intermediate\node_modules'
250px|700px|reset
A: 由于 Windows 10 的安全策略,nodejs 使用 fs.symlink 创建目录短链接时可能(不排除在后续版本修复了此问题)需要管理员权限或者开启 “开发者选型”。详见 https://github.com/nodejs/node/issues/18518#issuecomment-513831915
遇到上述问题,建议开启 Windows 10 的开发者选型
250px|700px|reset
- Mac 或 Linux 系统下首次安装 @byted-apaas/cli 工具时可能会报 permission denied
250px|700px|reset
A: 这是因为当前登录用户没有全局 NPM 目录写权限,可通过创建一个新的安装目录解决:
- 创建一个新的目录:
mkdir ~/.npm-global
- 设置安装目录:
npm config set prefix '~/.npm-global'
- 修改环境变量:
echo "export PATH=~/.npm-global/bin:$PATH" >> ~/.profile
source ~/.profile
- 再次执行安装命令即可:
npm i -g -apaas/cli
- 输入 ae dev 报错 namespace 未提供,
报错:The namespace should be provided in kldx-project.json
250px|700px|reset
A:由于编译自定义组件时必须明确 namespace,所以需要在 kldx-project.json 中明确指定。
- 输入 ae auth login 报错: Tenant not found
A:输入正确的namespace,查看【DX_CLI_02003】
250px|700px|reset
- 使用 ae source push 报错 Can not resolve component in 'xxxx/xxx'
250px|700px|reset
A:
解析组件时未找到入口文件,请检查components下的自定义组件中是否有以下文件之一:
250px|700px|reset
250px|700px|reset
- 报错的文件路径中包含了 .ae/merge
删除 .ae/merge 文件后,再重试相关 ae 命令
250px|700px|reset
- 使用 ae component create/ ae component dev/ yarn install/ npm install 等动作时,出现: Execute command 'yarnpkg' failed with exit code 1.
250px|700px|reset
A: 此类问题多发于本地网络请求不到公网的 npm 包资源导致的,两个方向自查
- 确认本地 npm 源是否指向公网 npm config set registry https://registry.npmmirror.com
- 查找本地目录中是否存在 yarn.lock package-lock.json 若存在,删除后重试
HTML 组件
- 为什么在设计态我的 js 代码没有执行?
A:目前设计态下,HTML组件代码中的 <script></script> 标签中的代码不会执行。
- 为 buttion 标签配置 onclick 事件属性时为何报错?
A:JS 脚本仅支持在 script 标签中编写,不再支持在常规标签中编写 onclick 等属性。如果需要给 DOM 绑定事件,可用 element.onclick = handlerFunc 或 element.addEventListener("click", handlerFunc) 中的任意一种写法。
云函数
- 我想让外部系统调用云函数,该怎么做?
250px|700px|reset
- 云函数有什么案例?
- 如何获取当前用户的时区、语言?
关键词:时区,语言
云函数内使用 conetxt.user.getLocal()可以获取到当前用户的时区和语言
const userLocal = context.user.getLocal(user_id|number[])
console.log(userLocal)
---------- console -------------
{
language: string;
timeZone: {
location: string;
offset: string;
},
userId: number;
}
- 云函数用户需要出口 IP 解决方案
A:目前产品上没提供出口 IP 能力的,如果用户需要出口 IP 的场景是配置鉴权(如云函数内访问外部需要鉴权的服务,外部服务通过访问 IP 鉴权)建议用户通过其他方式实现:
- 若待访问外部服务用户可进一步开发,则建议用户在 aPaaS 云函数调用外部服务时添加鉴权参数,比如 token,然后在外部服务对鉴权参数进行验证;
- 若待访问外部服务用户没权进一步开发,则建议用户自己配置代理服务,云函数先调用代理服务(添加鉴权参数),代理服务中对鉴权参数做验证,验证通过后调用待访问外部服务(外部服务设置代理服务的 IP )
- GO函数如何进行日期比较?
A:日期比较可使用 IsOnOrBefore 和 IsOnOrAfter。
- 如何获取全局选项?
- 如何获取全局变量?
- 云函数使用了哪个 npm 包源?
- 云函数请求报错 k_cf_ec_200001
- 内网环境使用 opensdk 外网版(内部请求公网域名)容易出现超时,如果用内网需要切换至内网版
- 检查代码以及请求入参格式是否正确
- 变量无法识别 .oql(select * from testPlan where name LIKE '%$searchValue%', { searchValue })
A:这可能是由于在 OQL 查询中,变量的使用方式不正确导致的。在 OQ L查询中,需要使用 `${}` 来引用变量,而不是 `%$searchValue%`。正确的使用方式应该是:
const records = await application.data.oql("select text, multilingual from allFieldObject where email=$email limit 3",
{
}).execute();
- 在云函数中使用哪个 context API 可以调用其他云函数?
- 云函数返回 ERR_BAD_RESPONSE 是什么意思
A:一般是 http 返回结果有问题
- 执行 ae function dev 报错
A:执行 ae function dev 报错报错的原因有很多,具体可以根据返回错误信息进行判断,以下是可能出现报错的原因:
- 确认node版本是否过低
- 确认调试时包体积是否过大
- 确认引用的仓库是否是公网的
- batchCreate() 的语法格式是什么?
batchCreate() 的语法格式是:
await context.db.object("_user").batchCreate(
[
{_name: "John", age: 19, gender: "male"},
{_name: "Alis", age: 16, gender: "female"}
]
);
- 执行函数报错 ERROR DX_CLI_41076 使用 yarn 安装依赖项失败: yarn install v1.22.19 warning package.json: No license field
- 如果有 momentjs,需要卸载掉,此依赖已废弃
- 删除 yarn.lock
通用
- 什么是 Open API? 我该怎么用?
关键词:外部系统,获取对象记录数据,下载附件
使用飞书低代码平台搭建出的应用,可以自动生成供外部系统调用的 Open API 文档,更加方便企业内灵活的连接各个业务系统。
通过下面的步骤你可以新建 Open API,可以根据自己的需求设置该 Open API 可访问的方法,如:
- 了解对象元数据信息(对象字段配置、字段详情……)
- 增删改查(CURD)应用内的记录……
- 执行应用的流程、云函数……
- 获取全局选项、全局参数……
- 获取应用的页面链接、页面配置……
- 上传、下载附件
- 获取应用 tenantAccessToken
- ……
开发环境: | 线上环境: |
进入集成 -> API 凭证管理 -> 新建API凭证 | 进入应用管理页 -> Open API -> 新建API凭证 |
250px|700px|reset 250px|700px|reset | 250px|700px|reset 250px|700px|reset |
250px|700px|reset
- 调用频率限制
获取凭证 Token | 单应用 QPS 限制为:40 |
记录 增、删、改(单条) | 单应用 QPS限制为:
|
记录 增、删、改(批量) | 单应用 QPS 限制为:
|
记录查询 | 单应用 QPS 限制为:
|
执行函数 | 单应用 QPS 限制为:50 |
执行流程 | 仅可执行 「直接运行流程」,其他诸如「表单、webHook」流程不可由 OpenAPI 触发 |
文件上传 | 最大 300M |
文件下载 | 最大 500M,更大的文件需要用分片接口(开发中)。 |
分布式任务 | 数据集最大 50M |
其他未标注接口 | 单应用 QPS 限制为:500 |
- 为什么记录存在,但是 Open API 查询不到数据
A:通常是因为使用的 token 凭证使用错误导致的,不是对应的 token。
- 如何调用 OneService 的 API ?
- 如何调用 RPC 接口
A:字节内部开发者可以走自定义连接器选择 Kitex 协议;外部开发者可通过 OpenAPI 使用 HTTP 连接器调用。
250px|700px|reset
- 如何从第三方应用集成飞书低代码平台账号,实现自动登录?
A:考虑到安全风险,不支持 sso 接入
- VUE3 有办法和低代码结合使用吗?
A:暂不支持
- 如何通过代码来邀请外部用户
- 可以通过 JS 代码打开弹窗组件吗?
- 出现 Request limited current 的报错是什么原因?
Request limited current 的报错意味着接口的调用频率超过了限制。接口的调用频率限制为 15QPS,超过此限制时,会返回错误代码 k_op_ec_20003。
- 出现 api_response_builtin_abort_error 的报错是什么原因?
api_response_builtin_abort_error 表示请求被取消。这种错误常见于搜索页面,在连续进行搜索时,系统会取消上一次的请求,从而产生这个错误码。
- 飞书低代码平台的系统时间戳是如何生成的?底层使用了什么?
飞书低代码平台调用了 golang 的 time 包来获取时间戳,服务运行在 TCE 上,取的是机器的系统时间戳。
- 报错:ERROR DX_CLI_41109 install-pkg: "yarn add --cached" run failed with errors in file:/var/folders/j_/mpb8vjfx2c75sghzhwzt0s_m0000gn/T/.ae/devtools/HTML/0.5.1/.yarn_errors.log
执行 npm install -g @byted-apaas/cli@1.2.2 指定版本到1.2.2试试
250px|700px|reset

















