从另一个模块导入包

Import package from another module

我必须在现有的 Go 后端代码之上创建一个桌面应用程序,因为这个要求和我在 Web 开发方面的知识我正在使用 Wails

我使用 Wails CLI 在后端主项目的子文件夹中生成了桌面应用程序项目。 文件夹结构如下所示:

backend
├── [...]
├── logger
│   └── logger.go
├── gui
│   └── desktopApp
│       ├── build
│       │   └── desktopApp
│       ├── frontend
│       │   └── [...]
│       ├── go.mod
│       ├── go.sum
│       ├── main.go
│       └── project.json
├── main.go
├── go.mod
└── go.sum

logger已经在桌面应用程序中导入,并且在通过浏览器进行开发和测试期间一切正常。但是,当我使用 desktopApp 文件夹中的命令 wails build 构建桌面应用程序时,出现以下错误:

go: <domain>/<owner>/backend/logger: unrecognized import path "<domain>/<owner>/backend"

我像这样在桌面应用程序中导入了后端:

/backend/gui/desktopApp/go.mod

module desktopApp

go 1.15

require (
    <domain>/<owner>/backend v0.0.0
)

./gui/desktopApp/main.go

package main

import (
    "github.com/leaanthony/mewn"
    "github.com/wailsapp/wails"

    "<domain>/<owner>/backend/logger"
)

// Using the logger package normally

我该如何解决我的问题?

我看到您使用 go-module 并将代码存储在 reposub-module

问题是您忘记添加“desktopApp”-prefix

import (
    "github.com/leaanthony/mewn"
    "github.com/wailsapp/wails"

    "desktopApp/backend/backendPackage"
)

正确的使用方法modules

修复 desktopApp 模块的 go.mod

module <domain>/<owner>/desktopApp

go 1.15

修复 backends 导入,因为它属于 desktopApp

import (
    "github.com/leaanthony/mewn"
    "github.com/wailsapp/wails"

    "<domain>/<owner>/desktopApp/backend/backendPackage"
)

我解决了我的问题,像这样更改嵌套桌面应用程序的 go.mod 文件:

module desktopApp

go 1.15

require (
    <domain>/<owner>/backend/logger
)
// Added this line
replace <domain>/<owner>/backend/logger => ../../