2017-11-13 7 views
0

私はバックエンドにGolang(Echo)を、フロントエンドにReactを使用しています。 webpackを使用してコードをバンドルすると、ファイルが作成されます。しかし、localhostに行くと私のコンソールにエラーが表示されます:3000は、バンドルファイルが見つからないと述べています。これは正確なエラーメッセージです。GET http://localhost:3000/build/app.bundle.js net :: ERR_ABORTED。ここでバンドルされたファイルが見つかりません

は私のサーバーである:ここでは

func main() { 
    env.SetEnvVars() 

    e := echo.New() 
    e.File("/", "server/static/index.html") 

    e.Logger.Fatal(e.Start(os.Getenv("PORT"))) 
} 

は私のwebpack.config.jsファイルです:

module.exports = { 
    entry: './client/main.jsx', 
    output: { 
    path: path.resolve(__dirname, 'server/static/build'), 
    filename: 'app.bundle.js' 
    }, 
    ... 

そして、私のindex.htmlファイル内のスクリプトタグは以下のとおりです。

<script src="./build/app.bundle.js"></script> 

これらのファイルに関するディレクトリパスは現在:

です
/ 
    server/ 
    main.go 
    static/ 
     index.html 
     build/ 
     app.bundle.js 

ご協力いただければ幸いです!

答えて

1

設定したechoサーバは、index.htmlファイルの内容をレンダリングすることによって、単一のパス、ルートパス("/")を提供します。そのサーバーに他のハンドラを設定していないので、ルート以外のパスに対するリクエストは、スクリプトやリンクタグを介してインデックスページから行われたリクエストを含めて404になります。 <script src="./build/app.bundle.js"></script>

たとえば、"/static/build/app.bundle.js"のようなパスにリクエストを送信できるようにするには、新しいハンドラを登録することによってサーバーに指示する必要があります。

echoサーバーでは、Staticメソッドを使用してそのことを行うことができます。

e.Static("/static", "static") 

リンクはあなたがhtmlタグで使用することを覚えておいてください、あなたのマシン上の対応するファイルの場所、そしてあなたが./build/app.bundle.jsのように相対パスを使用する場合は、アプリの事項を発売する場所、および理由そのうちのe.Staticへの2つの引数は、ここの例と多少異なる必要があります。

ここにもう少しinfoです。

+0

ありがとうございました!これは問題を解決しました。 –

関連する問題