0

Reactで小さなアプリを作成し、いくつかの簡単なルートを設定しました。私のlocalhost上のクライアントで正常に動作します。すべてのJSコードは1つのファイルにバンドルされ、index.htmlファイルによってアクセスされます。サーバーに展開すると、すべてがクライアント側であるため、ルートへの要求は機能しません。React SSR:Error Uncaught SyntaxError:予期しないトークン<

これを修正するために、ExpressJSを使用してインデックスファイルを提供するためのチュートリアルをいくつか見てみました。どのルートでもクライアントアプリケーションを読み込むことができます。問題は、私がインデックスファイルを提供するとき、それは私にHTMLファイルを返し、私はこのエラーを受け取ります:app.js:1 Uncaught SyntaxError: Unexpected token <と私はなぜこれが起こり、どのようにこれを解決できるのか分かりません。スクリプトタグを削除するたびに、HTMLだけでファイルが正しく配信されます。私が見つけた他の情報源はあまり役に立ちませんので、この時点で何をすべきか分かりません。これを解決するために何をする必要がありますか?

は、ここに私のサーバーのファイルです:

const express = require('express') 
const path = require('path') 
const port = process.env.PORT || 3000 
const app = express() 

app.use(express.static(__dirname + '/dist')) 

app.get('*', function (request, response){ 
    response.sendFile(path.resolve(__dirname, '../dist', 'index.html')) 
}) 

app.listen(port) 

そして、ここに私のインデックスファイルは、速達で提供しています:

<!DOCTYPE html> 
<html lang="en"> 
<head> 
    <meta charset="UTF-8"> 
    <meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no"> 
    <title>app</title> 

    <!-- build:css css/app.min.css --> 
    <link rel="stylesheet" href="css/main.css"> 
    <!-- endbuild --> 
</head> 
<body> 

<div id="app"></div> 

    <!-- build:js js/app.min.js --> 
    <script src="js/app.js"></script> 
    <!-- endbuild --> 
</body> 
</html> 

ありがとう!

答えて

0

バンドルが正しく動作していないようです。 create-react-app(反応の作成者が提供)を使用することを強くお勧めします。これは、手動でこれを行うことを試みるすべての疑問符を排除します。手動で管理したい場合は、npm run ejectを使用して完全に制御できます。

tutorial on how to integrate with a node backendも提供します。

最後に、サーバーサイドレンダリング(SSR)に移行する場合は、a guide on the steps needs coming from create-react-appがあります。ここでは、コードサンプルとともにgithubリポジトリも提供しています。

関連する問題