开发接入常见问题
刚开始用 Guava UI 写代码,一堆报错看不懂? 这里汇总了开发接入过程中最常碰到的问题,直接找你的场景。
环境准备相关
Q: 依赖装不上或者启动报错怎么办?
按这个顺序执行命令:
- 删除
pnpm-lock.yaml和node_modules - 重新运行
pnpm install
rm -rf node_modules pnpm-lock.yaml
pnpm installQ: Node.js / pnpm 版本不对怎么办?
| 工具 | 要求版本 |
|---|---|
| Node.js | 24.18.0 |
| pnpm | 11.9.0 |
必须严格匹配
版本不一致会导致各种奇怪的构建和运行时问题。用 nvm use 24.18.0 切换。
Q: 项目路径有什么要求?
路径不能有中文或空格,否则依赖安装和构建可能失败。
- ✅ 正确:
/Users/xxx/projects/guava-ui - ❌ 错误:
/Users/xxx/我的项目/guava-ui
控制台报错相关
Q: 控制台报 Vue Router 警告:"Record with path xxx is either missing a component(s) or children property"?

原因:路由配置里写了某个页面,但对应的组件文件还没创建。
解决:把路由指向的组件文件建好就行了。
Q: 控制台报 "Uncaught (in promise) TypeError: l.iconName.startsWith is not a function"?
原因:把 Element Plus 的图标组件传给了 prefix-icon / suffix-icon,但 GvInput 只接受字符串名称。
<!-- ❌ 错误:传了组件 -->
<GvInput :prefix-icon="Search" />
<!-- ✅ 正确:传字符串 -->
<GvInput prefix-icon="el-icon-search" />Q: 控制台报 "The dicType needs to be set"?
原因:GvSelect 没有设置 dic-type 属性。
<!-- ✅ 正确 -->
<GvSelect v-model="value" dic-type="e#1=选项一:2=选项二" />组件使用相关
Q: 用组件时遇到问题,去哪查?
- 先看组件文档,基本覆盖了大部分使用方式
- 如解决不了 → 提 Issue
Q: import 组件时为什么报"引入组件时报错"?
引入组件时不要加 {},否则会报错:
// ✅ 正确
import { GuavaUI } from 'guava-ui';
// ❌ 错误:不要加花括号包裹单个组件Q: import ts 文件时报错是怎么回事?
和组件不同,引入 ts 文件或多个内容时必须加 {}:
// ✅ 正确:ts 文件必须带花括号
import { debounce, throttle } from '@/utils';
import { a, b } from './utils';Q: script 标签里代码报错,语法不生效?
项目所有 script 都用的 TSX 语法,不要写 lang="ts":
<!-- ✅ 正确 -->
<script lang="tsx" setup>
// TSX 语法支持
</script>
<!-- ❌ 错误 -->
<script lang="ts" setup>
// 可能报语法错误
</script>Q: 新增文件后编辑器报类型错误?
原因:Vue (Official) 插件缓存问题。
解决:重启编辑器即可。
Q:我在页面的script标签里使用了组件,为什么提示找不到名称?

原因:因为项目使用的是 TSX 语法,全局导入的组件只对 .vue 文件的 <template> 有效。
解决:在 script 标签里引入对应的组件:
<!-- ✅ 正确 -->
<script setup lang="tsx">
import { GvDatePicker } from 'guava-ui';
const formDataList = ref([
// ...
{
type: 'text',
format: [1, 'isDate', 10],
label: '开始日期 ',
prop: 'startDate',
edit: true,
width: 'auto',
render: (scope: Recordable<any>) => (
<div>
<GvDatePicker size="small" type="date" disabled={!!scope.row.id} v-model={scope.row.startDate} />
</div>
)
}
// ...
]);
</script>Q:我的table表格右侧顶部为什么没有搜索框?
如下图,为什么我的table表格右侧顶部没有红色标记2区域的搜索框?

原因是少设置了参数 query。表头数据结构中设置 query: true 即可。当 query: true 时,表格顶部会显示全局搜索框。全局搜索过滤条件为设置了 query: true 的字段,未设置 query: true 的字段不参与全局搜索。上图中参与全局搜索的字段是绿色标记区域中的3个字段。
{
label: '用户账号',
prop: 'u@account',
fixed: 'left',
query: true,
width: 'auto'
},功能相关
Q: 菜单怎么是动态生成的?想自定义菜单怎么办?
菜单是根据路由配置动态生成的。要自定义菜单,改路由配置就行。
TIP
确保路由配置和实际目录结构一致,否则菜单会显示异常。
Q: 要嵌入外部系统的页面需要怎么办?
在路由配置router/index.ts里添加静态路由配置,创建路由对应组件文件,在组件中引入外部页面(如 iframe)地址即可。
Q: 数据来源是多个表时,表头搜索项报错?
原因:多表联查时字段没有加别名,导致 SQL 解析歧义。
解决:筛选字段用 表别名@字段名 格式:
<!-- ✅ 正确 -->
{
type: 'text',
format: [0, 'isAny', 30],
label: '应收单号',
field: 'obo@billNo' // 表别名@字段名
},Q: 翻页后复选框回调获取不到值?
原因:DOM 更新是异步的,翻页后立即获取勾选值可能还没渲染完。
解决:加一行 await sleep(1) 等待渲染完成:
<!-- ✅ 正确 -->
await sleep(1); // 必须加,否则可能获取不到勾选的值
// 然后获取选中的值升级维护相关
Q: 升级 guava-ui 版本?
常规升级:
- 项目根目录下控制台执行命令行
pnpm guava:upgrade- 查看升级内容,调整项目中受影响的代码
Q: 使用了pnpm guava:upgrade后,未生效?
1.删除旧依赖和锁文件
// mac
rm -rf node_modules pnpm-lock.yaml package-lock.json
// windows
rmdir /s /q node_modules
del /q pnpm-lock.yaml package-lock.json2.重新安装依赖并启动项目
pnpm install && pnpm dev3.查看升级内容,调整项目中受影响的代码