写项目时遇到的相关问题汇总

758 字
4 分钟
写项目时遇到的相关问题汇总

Go 相关#

包导入不了#

go mod tidy / 直接下载都无法导入,即使彻底删掉文件夹之后重来也无法导入。

在创建项目中选择 Go,而不是 Go (GOPATH)。如果选择了 Go (GOPATH),设置 -> Go 模块 -> 启用 Go 模块集成

YAPI 修改密码后显示密码错误#

YAPI 只有在第一次初始化数据库时,才会读取 YAPI_ADMIN_PASSWORD 环境变量并创建账号。因为之前已经启动过一次,数据库文件(./data/db)已经生成了,并且写入了旧密码。当你修改 docker-compose.yml 并重启时,YAPI 发现数据库已经存在,就不会再次覆盖修改密码了。

需要在 docker-YApi 目录下依次执行:

Terminal window
docker compose down
sudo rm -rf data
docker compose up -d

隔离开发环境和生产环境时设置环境变量不生效#

再设置环境变量之后,需要重启 Goland,而不能只重启终端,否则环境变量不会生效。如果有多个 Goland 窗口打开,需要先全部关闭后再打开。

Nacos 容器相关问题#

Nacos 容器无法启动#

虚拟机内存分配过小,对于个人来讲,可以在安装时适当减少内存分配,例如:

Terminal window
docker run -d \
--name nacos \
-p 8848:8848 \
-p 9848:9848 \
-p 9849:9849 \
-p 8080:8080 \
-e MODE=standalone \
-e SPRING_DATASOURCE_PLATFORM=mysql \
-e MYSQL_SERVICE_HOST=192.168.63.131 \
-e MYSQL_SERVICE_PORT=3306 \
-e MYSQL_SERVICE_DB_NAME=nacos \
-e MYSQL_SERVICE_USER=root \
-e MYSQL_SERVICE_PASSWORD=123456 \
-e NACOS_AUTH_ENABLE=true \
-e NACOS_AUTH_TOKEN=U2VjcmV0S2V5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5 \
-e NACOS_AUTH_IDENTITY_KEY=nacos_server_key \
-e NACOS_AUTH_IDENTITY_VALUE=nacos_server_value \
-e JVM_XMS=512m \
-e JVM_XMX=512m \
--restart=always \
nacos/nacos-server:latest

Nacos 容器启动后创建配置无法成功写入数据库#

换成 Chrome 无痕模式或者干脆换成 Edge 就可以了。尝试过清楚缓存并硬性加载也不行,关闭插件也不行,具体不清楚为什么。只有 Chorme 会遇到这个问题。

proto相关#

服务器实现结构体的强制性接口约束#

新版 gRPC 在生成的接口中包含了一个“私有”方法(例如 mustEmbedUnimplementedUserServer())。如果不嵌入这个结构体,你的 UserServer 就没有这个方法,编译器会报错,提示它没有完全实现接口。例如正确写法例如:

type server struct {
proto.UnimplementedUserServer
}

proto 文件的同步#

通过 .proto 文件定义服务接口规范,需保持两端定义一致。字段编号必须严格一致,字段顺序可调整。字段编号冲突会导致数据错位。

接口变更需同步更新所有调用方的 .proto 文件,禁止手动修改自动生成的桩代码。

Java相关#

java<程序包org>.aspectj.weaver.reflect不存在#

更新Maven包,并在IDEA中同步所有Maven项目和重新加载所有Maven项目

aspectjweaver-1.8.13.jar时出错#

选择项目文件夹,在Maven中选择生成源代码并更新文件夹

base64decoder 找不到符号#

从Java 8开始,应使用java.util.Base64类来处理Base64编码和解码。这个类提供了Base64.Decoder和Base64.Encoder两个嵌套类:

// Java 8及更高版本使用java.util.Base64
Base64.Decoder decoder = Base64.getDecoder();
byte[] decodedBytes = decoder.decode(encodedString);
Base64.Encoder encoder = Base64.getEncoder();
String encodedString = encoder.encodeToString(byteArray);

文章分享

如果这篇文章对你有帮助,欢迎分享给更多人!

写项目时遇到的相关问题汇总
https://www.lansganbs.cn/posts/项目开发/写项目时遇到的相关问题汇总/
作者
Zowely
发布于
2025-01-22
许可协议
CC BY-NC-SA 4.0

评论区

Profile Image of the Author
Zowely
红叶最多情,一舞寄相思。
公告
欢迎来到我的博客!这里分享计算机等相关内容。