我具有以下文件结构。
jinja2.exceptions.TemplateSyntaxError
配置和命令包都在内部目录内。通过键入commands.Command(),导入就像一个超级按钮一样工作。当我尝试在命令包中键入config.InitializeConfiguration()时,出现以下错误。
未定义:配置
由于某种原因,该软件包也没有自动导入commands.go文件顶部。 go包只能导入到主包中吗?
我尝试了以下方法:
手动输入以下导入内容:
/myProject
|-main.go
|-/internal
|-/config
|-/commands
我还尝试过手动键入以下内容,希望golang会自动创建导入。
"myProject/internal/config"
我确实阅读了一些文章和文档,但是他们没有说您是否可以导入另一个内部软件包内部的软件包。
我也阅读了How to properly import a package from sub-directory in Golang?上的解决方案,但没有提供答案的解决方案。
commands.go
` 打包命令
config.InitializeConfiguration()
`
我希望程序包能够正确导入,但事实并非如此。相反,我收到错误消息import (
"log"
"os"
"github.com/urfave/cli"
)
var datamodels string = ""
var output string = ""
func Command() {
app := cli.NewApp()
app.Name = "goql"
app.Usage = "Generates GraphQL schema automatically."
app.Flags = []cli.Flag{
cli.StringFlag{
Name: "datamodels, d",
Usage: "Loads datamodels from specified `.graphql files.`",
Destination: &datamodels,
},
cli.StringFlag{
Name: "output, o",
Usage: "Directory to save GraphQL schema generated.",
Destination: &output,
},
}
app.Commands = []cli.Command{
{
Name: "generate",
Aliases: []string{"g"},
Usage: "Generates the GraphQL schema.",
Action: func(c *cli.Context) error {
if datamodels == "" {
log.Fatal("Missing flag: datamodels. Please provide a single .graphql file or a comma separated list of .graphql files.")
}
if output == "" {
log.Fatal("Missing flag: output. Plase provide a sigle directory name.")
}
config.InitializeConfiguration(datamodels, output)
return nil
},
},
}
err := app.Run(os.Args)
if err != nil {
log.Fatal(err)
}
}
。