最新版本seata 2.4.0启动后访问控制台404
1 前言
此版本将seata访问控制台移动到seata-namingserver中,所以如果需要访问控制台,需要先将seata-namingserver启动,然后将seata-server的注册中心配置seata,并配置注册中心信息。支持多注册中心用,分割即可。如下图:

2 问题发现
按照官方文档,说明先将seata-namingserver启动,然后修改seata-server/config/application.yml的注册中心为seata,并启动seata-server服务。服务启动均正常,占用了8081、7091、8091三个端口,但是通过浏览器访问ip:8081返回404。
3 发现问题所在
拉下源码分析发现,控制台的相应的模块位于console下,打包之后的console.jar包应该是会存在前端代码的。通过分析console模块下的pom.xml文件的编译打包部分发现,前端代码打包后应位于jar包中resource/static下。然后我将seata-namingserver/lib/seata-console-2.4.0.jar包解压缩查看之后发现resource/static目录下仅有一个图标文件,并没有别的前端相关代码。相同的方法查看seata-console-2.3.0.jar包中却存在前端代码。因此更加验证我的猜想。
4 解决
既然发现了问题,解决起来就很简单了。
首先,下载seata2.4.0的源码。
第二,进入console/src/resource/static/console-fe目录,打包编译前端项目。
打包的方式最好是使用cnpm,我用yarn 以及 npm都失败。
打包步骤:
1、先看node-sass版本,需要使用对应版本的node,我这里使用的node版本是20.9.0
2、安装cnpm
npm install -g cnpm --registry=https://registry.npmmirror.com3、安装依赖
cnpm install4、打包编译
cnpm run build这里还给你留了一个坑:src/reducers/locale.ts这个模块中需要用到alifd/next模块,但是package.json中并没有引入@alifd/next相关依赖,所以需要将package.json中添加上@alifd/next相关依赖后。重新运行cnpm run build后打包成功。
第三,将seata-namingserver/lib/seata-console-2.4.0.jar解压缩得到seata-console-2.4.0目录。
第四,将第二步中的产生的dist文件夹下的所有文件复制到第三步解压后的seata-console-2.4.0/resource/static目录下。
第五,重新将seata-console-2.4.0目录打包为jar包。
jar cvf seata-console-2.4.0.jar -C seata-console-2.4.0/ .
最后,将打包完的seata-console-2.4.0.jar替换到seata-namingserver/lib下即可解决。
5 解决
这时候需要先启动运行seata-namingserver,然后在启动seata-server之后。通过ip:8081可以正常访问。
这里还给你留了一个坑:访问ip:8081并登录后显示接口404。这是因为源码中有配置访问接口有前缀/api,所以需要在seata-namingsercer/config/application.yml配置server.servlet.context-path: /api。然后需要访问ip:8081/api访问。
更多推荐



所有评论(0)