[zeromicro/go-zero]goctl生成代码的import包路径错误

2024-02-18 571 views
1
cd /work/goproject/
goctl api new greet

生成后greet.go源码中的import包路径错误:

package main

import (
    "flag"
    "fmt"

    "greet/work/goproject/greet/internal/config" //错误路径,正确应该是greet/internal/config
    "greet/work/goproject/greet/internal/handler"//同样
    "greet/work/goproject/greet/internal/svc"//同样

    "github.com/tal-tech/go-zero/core/conf"
    "github.com/tal-tech/go-zero/rest"
)
...

回答

6

work的parent目录是什么?是greet? 在work的parent下有go.mod文件吗?可以把这个tree贴一下

5

需要更详细的信息,路径,是不是在gopath下,错误信息等

5

测试结果是因为我在软连接目录下创建项目,linux和mac上都一样,只要在软链接目录下创建项目就会出错 如:

ln -s /System/Volumes/Data/work /work 
cd /work/goproject
goctl api new greet

如上软链接,就会出错,原因大概定位到gozero源码https://github.com/tal-tech/go-zero/blob/4c1bb1148ba7ee2d1f9dd0858f1df22816469a78/tools/goctl/api/gogen/util.go#L73

image image projectCtx.Dir获取的是原始path, 导致strings.TrimPrefix无效