V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
dwSun
V2EX  ›  程序员

go 的项目文件夹下一直在生成 pkg 文件夹怎么处理

  •  
  •   dwSun ·
    dwSun · 11 天前 · 1146 次点击

    如图:

    https://img.picgo.net/2024/11/20/_2024-11-20_111954_566fe82a74a88a3f533.png

    我现在项目里面,老是会生成这个 pkg 文件夹,看一些资料,说是 moulde 设置的问题.

    但是改了几遍不同的设置,这个文件夹还是在生成,而且这个 pkg 也不是在代码里面,而是在项目的根目录。如图,我的代码是在 src 下面的 mod 文件也在 src 下面,但是 pkg 却在项目根目录生成了

    用 cursor 或者 vscode 都会生成这个文件夹,本来用 vscode 问题不大,但是现在用 cursor ,每次都要把这个 pkg 文件夹解析一遍,实在太慢了。

    GOENV 的设置如下:可以看到该有的都有了,GOPATH 也是正常的。

    GO111MODULE='on'
    GOARCH='amd64'
    GOBIN=''
    GOCACHE='/home/david/.cache/go-build'
    GOENV='/home/david/.config/go/env'
    GOEXE=''
    GOEXPERIMENT=''
    GOFLAGS=''
    GOHOSTARCH='amd64'
    GOHOSTOS='linux'
    GOINSECURE=''
    GOMODCACHE='/home/david/Code/go/pkg/mod'
    GONOPROXY=''
    GONOSUMDB=''
    GOOS='linux'
    GOPATH='/home/david/Code/go'
    GOPRIVATE=''
    GOPROXY='https://goproxy.cn,direct'
    GOROOT='/home/david/Code/go/vers/go'
    GOSUMDB='sum.golang.org'
    GOTMPDIR=''
    GOTOOLCHAIN='auto'
    GOTOOLDIR='/home/david/Code/go/vers/go/pkg/tool/linux_amd64'
    GOVCS=''
    GOVERSION='go1.23.3'
    GODEBUG=''
    GOTELEMETRY='local'
    GOTELEMETRYDIR='/home/david/.config/go/telemetry'
    GCCGO='gccgo'
    GOAMD64='v1'
    AR='ar'
    CC='gcc'
    CXX='g++'
    CGO_ENABLED='1'
    GOMOD='/dev/null'
    GOWORK=''
    CGO_CFLAGS='-O2 -g'
    CGO_CPPFLAGS=''
    CGO_CXXFLAGS='-O2 -g'
    CGO_FFLAGS='-O2 -g'
    CGO_LDFLAGS='-O2 -g'
    PKG_CONFIG='pkg-config'
    GOGCCFLAGS='-fPIC -m64 -pthread -Wl,--no-gc-sections -fmessage-length=0 -ffile-prefix-map=/tmp/go-build1345018295=/tmp/go-build -gno-record-gcc-switches'
    
    10 条回复    2024-11-21 11:08:47 +08:00
    body007
        1
    body007  
       11 天前
    你的项目放到 GOPATH='/home/david/Code/go' ,GOROOT='/home/david/Code/go/vers/go' 这两个目录的子目录没?用 go mod 时一定要把项目放到 GOPATH ,GOROOT 以外的目录。
    dwSun
        2
    dwSun  
    OP
       11 天前
    @body007 #1 在另一个单独的目录,没在 GOPATH ,GOROOT 下面。
    javalaw2010
        3
    javalaw2010  
       11 天前
    没碰见过,可以排查下,有可能项目本身有什么玩意儿影响了,或者编辑器覆盖了环境变量。可以挨个排查下,把 pkg 删了,再别的路径上新起个项目看看 pkg 文件在哪生成的,然后试下分别在 vscode 里面的 terminal 和系统的 terminal 里面 build 一下,先判断是项目本身有问题还是环境有问题。
    Nazz
        4
    Nazz  
       11 天前   ❤️ 1
    换个教程看看, 你这是上古时代的宝贝
    Trim21
        5
    Trim21  
       11 天前 via Android
    你的代码在哪个目录?
    kkk9
        6
    kkk9  
       11 天前
    这个情况看起来是 GO111MODULE=on 没有生效,建议看下是不是 makefile 或者其他地方覆盖掉 off 了?
    dwSun
        7
    dwSun  
    OP
       10 天前
    目前用了两个办法来规避这个问题:
    - 1 放一个 .cursorignore ,可以放 cursor 忽略特定的文件和目录,语法和作用都跟.gitignore 一样的。
    - 2 在根目录放一个空的 go.mod 文件,看上去,因为我的项目根目录,不是代码根目录,被编辑器误认为不是 mod 的项目,所以做了一些奇怪的操作。
    realpg
        8
    realpg  
       10 天前
    盲猜你是看别人教程学的 go
    然后这个教程比较古董
    项目结构跟现在的常规项目不一样
    xiaocaiji111
        9
    xiaocaiji111  
       10 天前
    是 go 以前没有 module 时候得版本吧,那个项目要放到 src 下,然后记得还有 pkg 和 bin 目录来着,当时开发这三个目录必备,后面再也没用过这种模式
    uds9u32br
        10
    uds9u32br  
       10 天前
    感觉像 IDE 在搞怪,试试纯命令行构建或者 goland 。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2475 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 34ms · UTC 04:52 · PVG 12:52 · LAX 20:52 · JFK 23:52
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.