Can';在GoLang中无法读取文件

Can';在GoLang中无法读取文件,go,static-files,Go,Static Files,我是GoLang dev的新手,正在尝试制作一个简单的web应用程序。我一直在学习这个教程 但是,我甚至不能提供index.html文件 这是我的密码 func check(e error) { if e != nil { fmt.Println(e) panic(e) } } func Index(w http.ResponseWriter, r *http.Request) { fmt.Println("Index functoin"

我是GoLang dev的新手,正在尝试制作一个简单的web应用程序。我一直在学习这个教程

但是,我甚至不能提供index.html文件

这是我的密码

func check(e error) {
    if e != nil {
        fmt.Println(e)
        panic(e)
    }
}

func Index(w http.ResponseWriter, r *http.Request) {
    fmt.Println("Index functoin")
    indexHTML, err := ioutil.ReadFile("index.html")
    check(err)
    fmt.Println(indexHTML)
    w.Write(indexHTML)
}
这就是产生的错误

Index functoin
open index.html: no such file or directory
我的树结构是这样的

BasicWebServer/
BasicWebServer/main.go
BasicWebServer/index.html
BasicWebServer/static/
BasicWebServer/static/index.html
我所希望的就是能够提供index.html,因为它是一个AngularJS应用程序,已经在顺利运行。我试过这样处理静态文件

router := NewRouter()
s := http.StripPrefix("/static/", http.FileServer(http.Dir("./static/")))
但它不起作用,所以我现在正在尝试我能想到的最基本的方法

请帮忙


谢谢

如果您想
BasicWebServer/main.go
显示
BasicWebServer/index.html
,而不是
static
文件夹中的,那么您似乎没有正确配置HTTP服务器

这是您的代码,包括包声明、导入和一个
main
函数

package main

import (
    "fmt"
    "io/ioutil"
    "net/http"
)

func check(e error) {
    if e != nil {
        fmt.Println(e)
        panic(e)
    }
}

func Index(w http.ResponseWriter, r *http.Request) {
    fmt.Println("Index functoin")
    indexHTML, err := ioutil.ReadFile("index.html")
    check(err)
    fmt.Println(indexHTML)
    w.Write(indexHTML)
}

func main() {
    http.HandleFunc("/", Index)

    err := http.ListenAndServe(":8080", nil)
    check(err)
}

如果您希望
BasicWebServer/main.go
显示
BasicWebServer/index.html
,而不是
static
文件夹中的内容,那么您似乎没有正确配置HTTP服务器

这是您的代码,包括包声明、导入和一个
main
函数

package main

import (
    "fmt"
    "io/ioutil"
    "net/http"
)

func check(e error) {
    if e != nil {
        fmt.Println(e)
        panic(e)
    }
}

func Index(w http.ResponseWriter, r *http.Request) {
    fmt.Println("Index functoin")
    indexHTML, err := ioutil.ReadFile("index.html")
    check(err)
    fmt.Println(indexHTML)
    w.Write(indexHTML)
}

func main() {
    http.HandleFunc("/", Index)

    err := http.ListenAndServe(":8080", nil)
    check(err)
}

您的文件需要与服务器进程的工作目录相对。源文件中的位置与您运行服务器的位置无关。也可能重复相关/可能重复Guys这与我无法从文件系统正确读取文件的问题无关。您的文件需要与服务器进程的工作目录相关。源文件中的位置与您运行服务器的位置无关。也可能是相关的/可能是重复的家伙这与我无法从文件系统正确读取文件的问题无关嘿,伙计。谢谢你的回答。我只是试了一下,但没用。我再次看到“localhost页面不工作localhost没有发送任何数据。ERR\u EMPTY\u RESPONSE”。我所做的是复制您的源代码,将其粘贴到一个新文件main2.go中,然后运行“go run BasicWebServer/main2.go”。index.html文件与main2.go…index function2222 open index.html位于同一目录中:没有这样的文件或目录。。。。这是控制台中的输出如果我提供完整路径,我将获得正确的文件。但是,我不想提供完整路径,因为这意味着所有静态导入都将绑定到我的设置。我们能做些什么呢?进入
BasicWebServer
目录,然后
运行main2.Go
,你的相对路径就可以了。是的。非常感谢。对正在发生的事情有任何评论。从内部文件夹运行应用程序感觉有点奇怪。。。而且我的静态文件仍然没有显示:X如果需要的话,我可以提出一个单独的问题嘿,伙计。谢谢你的回答。我只是试了一下,但没用。我再次看到“localhost页面不工作localhost没有发送任何数据。ERR\u EMPTY\u RESPONSE”。我所做的是复制您的源代码,将其粘贴到一个新文件main2.go中,然后运行“go run BasicWebServer/main2.go”。index.html文件与main2.go…index function2222 open index.html位于同一目录中:没有这样的文件或目录。。。。这是控制台中的输出如果我提供完整路径,我将获得正确的文件。但是,我不想提供完整路径,因为这意味着所有静态导入都将绑定到我的设置。我们能做些什么呢?进入
BasicWebServer
目录,然后
运行main2.Go
,你的相对路径就可以了。是的。非常感谢。对正在发生的事情有任何评论。从内部文件夹运行应用程序感觉有点奇怪。。。此外,我的静态文件仍然没有显示:X如果需要,我可以就此提出一个单独的问题