Hi. I remain mystified. I tried your suggestion, but it didn't work.

This is .../learn/main.go
func main() {

    http.HandleFunc("/", handleRoot)
    http.Handle("/css/", http.FileServer(http.Dir("webpages/css")))
    http.Handle("/js/", http.FileServer(http.Dir("webpages/js")))

    fmt.Println("listening on port 8877")
    http.ListenAndServe(":8877", nil)
}


The files aren't found -- as soon as  http://127.0.0.1:8877/ is loaded the
two error messages produced are:

Refused to apply style from 'http://127.0.0.1:8877/css/main.css' because
its MIME type ('text/plain') is not a supported stylesheet MIME type, and
strict MIME checking is enabled.
127.0.0.1/:6 GET http://127.0.0.1:8877/js/file.js net::ERR_ABORTED 404 (Not
Found)


But simply displaying .../learn/webpages/main.html via chrome works
just fine.

For the record,  .../learn/webpages/main.html:
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<link rel="stylesheet" href="css/main.css">
<script type="text/javascript" src="js/file.js" ></script>
</head>
<body>
<div>
<h2> file location exercise </h2>
<input type="button" onclick="f1()" value="Find File" />
</div>
</body>
</html>

.../learn/webpages/css/main.css:
body {
background-color: Azure;
color: blue
}

and .../learn/webpages/js/file.js:
function f1() {
alert("Hello from .../learn/webpages/js/file.js")
}

So, I'm still in need of help.

Thanks!

On Mon, May 6, 2019 at 1:02 AM Burak Serdar <bser...@ieee.org> wrote:

> On Sat, May 4, 2019 at 10:20 PM ThisEndUp <rlten...@gmail.com> wrote:
> >
> > I am thoroughly frustrated. I have a file named main.html that
> references a css and a js file.
> >
> > Here's the relevant portion.
> > <head>
> >     <meta charset="utf-8">
> >     <link rel="stylesheet" href="css/main.css">
> >     <script type="text/javascript" src="js/file.js" ></script>
> > </head>
> >
> > This is in a subdirectory of my GOPATH/src, named learn/webpages, and
> the css and js files are in subdirectories of that, i.e.,
> learn/webpages/css/main.css and learn/webpages/js/file.js
> >
> > When I open the file main.html in my Chrome browser, it behaves just as
> I'd expect it to.
> >
> > When I try to serve it up via a go program, main.go in the learn
> directory (i.e., learn/main.go) I can't for the life of me figure out what
> magic configuration of http.HandleFunc, http.FileServer, http.Handle,
> http.StripPrefix, and http.Dir to use to get these files to load. I don't
> want to use absolute paths, since the location of the base directory will
> change over time.
> >
> > Here's the directory structure of the project. I've put a version of
> file.js and main.css into three different places (with slightly different
> contents, so I can tell which one loads, if any does). The ones I want are
> in the appropriate subdirectories of the webpages directory.
> >
> > [learn]
> > [js]
> > file.js
> > [webpages]
> > [css]
> > main.css
> > [js]
> > file.js
> > main.css
> > main.html
> > file.js
> > main.css
> > main.exe
> > main.go
> >
> > Key: [xxx] is a directory and its contents are indented below it.
> >
> > The following does not work, but it's the direction I've been trying.
> The func handleRoot loads the web page, but I can't figure out how to
> access the css and js files. And when the documentation refers to the
> "current directory" is that going to be learn, where main.exe is running,
> or learn/webpages where main.html lives?
> >
> >
> > // main.go
> > package main
> >
> > import (
> > "fmt"
> > "net/http"
> > )
> >
> > func handleRoot(w http.ResponseWriter, r *http.Request) {
> > http.ServeFile(w, r, "webpages/main.html")
> > }
> >
> > func main() {
> > http.HandleFunc("/", handleRoot)
>   ^^^^^^
> This will handle requests for "/" to handleRoot, which is correct
>
> >
> > fs := http.FileServer(http.Dir("webpages"))
> > http.Handle("/webpages/", http.StripPrefix("/webpages/", fs))
>   ^^^^^^^^^^^^^^^^^^^^^^^^
>
> This will handle requests for /webpages/ to fs, stripping the prefix.
> However, with the HTML file you have, the requests will be /css and
> /js, not /webpages/css or /webpages/js
>
> You could try this:
>
> http.Handle("/css/",http.FileServer(http.Dir("webpages/css"))
> http.Handle("/js/",http.FileServer(http.Dir("webpages/js"))
>
>
> >
> > fmt.Println("listening on port 8899")
> > http.ListenAndServe(":8899", nil)
> > }
> >
> >
> > I've looked at lots of webpages that purport to explain how to do this,
> but haven't yet figured any of them out. Any help will be greatly
> appreciated.
> >
> >
> > --
> > You received this message because you are subscribed to the Google
> Groups "golang-nuts" group.
> > To unsubscribe from this group and stop receiving emails from it, send
> an email to golang-nuts+unsubscr...@googlegroups.com.
> > For more options, visit https://groups.google.com/d/optout.
>

-- 
You received this message because you are subscribed to the Google Groups 
"golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to golang-nuts+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to