码良本地化gods-pen脚手架不显示组件标签问题处理

发布时间 2023-05-16 22:24:26作者: Crazy_Joker

问题描述

先说下问题的现象,在进行码良本地化时,使用gods-pen创建组件时,进行到组件标签选择时,没有选项。

问题猜想

gods-pen是放在npm上的,应该没有改变,不会出现问题,所以组件标签可能是存在数据库中,码良初始化脚本缺少初始数据。

以上猜想可以通过两种方式验证:

  1. 首先从数据库中查看是否有标签类表,尝试添加数据,重现创建组件,看是否有组件标签列表。

  2. 从gods-pen脚手架源码入手,查看组件标签数据源来自哪里。下面主要通过查看gods-pen脚手架源码的方式来解决此问题。

通过查看源码方式处理问题

创建一个临时文件夹用于处理这个问题,temp,使用vscode打开temp文件夹,执行下面的命令安装gods-pen脚手架工具。

npm install gods-pen-cli

进入node_modules查看gods-pen源码,查看create脚本。

在文件中搜索组件标签,可以看到数据来源为tags

tags数据来自于initdata()方法,进入initdata()方法查看数据如何获取。

查看getTags()方法可以看到数据是从/editor/tags/list接口获取,接下来我们去查看host地址是什么

host是从配置中获取注册地址registry,本地配置过registry为本地化地址,所以数据目前应该是从本地获取,数据库中应该是缺少初始数据。继续跟踪。

可以看到,默认或是配置报错情况,数据是从https://godspen.ymm56.com获取,使用postman尝试进行数据获取。

验证成功,数据是来自后端接口,接下来只需要编写脚本,把数据添加到数据库中或是在系统中直接进行维护。找到tags相关表。

编写脚本执行。

INSERT INTO `godspen_db`.`tb_tags` (`name`, `category_id`, `status`, `create_time`, `update_time`, `usenumber`) VALUES ('文本', '3', '1', NOW(), NOW(), '1');
INSERT INTO `godspen_db`.`tb_tags` (`name`, `category_id`, `status`, `create_time`, `update_time`, `usenumber`) VALUES ('图片', '3', '1', NOW(), NOW(), '1');
INSERT INTO `godspen_db`.`tb_tags` (`name`, `category_id`, `status`, `create_time`, `update_time`, `usenumber`) VALUES ('列表', '3', '1', NOW(), NOW(), '1');
INSERT INTO `godspen_db`.`tb_tags` (`name`, `category_id`, `status`, `create_time`, `update_time`, `usenumber`) VALUES ('画廊', '3', '1', NOW(), NOW(), '1');
INSERT INTO `godspen_db`.`tb_tags` (`name`, `category_id`, `status`, `create_time`, `update_time`, `usenumber`) VALUES ('形状', '3', '1', NOW(), NOW(), '1');
INSERT INTO `godspen_db`.`tb_tags` (`name`, `category_id`, `status`, `create_time`, `update_time`, `usenumber`) VALUES ('banner', '3', '1', NOW(), NOW(), '1');
INSERT INTO `godspen_db`.`tb_tags` (`name`, `category_id`, `status`, `create_time`, `update_time`, `usenumber`) VALUES ('标题', '3', '1', NOW(), NOW(), '1');
INSERT INTO `godspen_db`.`tb_tags` (`name`, `category_id`, `status`, `create_time`, `update_time`, `usenumber`) VALUES ('矢量图', '3', '1', NOW(), NOW(), '1');
INSERT INTO `godspen_db`.`tb_tags` (`name`, `category_id`, `status`, `create_time`, `update_time`, `usenumber`) VALUES ('其他', '3', '1', NOW(), NOW(), '1');