Express.js,意外的令牌<

Yaf*_*uko 5 javascript node.js express reactjs react-router

我有简单的快递服务器,看起来像这样:

Epxress应用程序:

var express = require('express');
var compression = require('compression');
var path = require('path');
var cors = require('cors');
var router = express.Router();

var app = express();

app.use('/bundle', express.static(path.join(__dirname, '/bundle')));

app.enable('trust proxy');

app.use(compression());

app.get('*', function(req, res) {
    res.header('Cache-Control', "max-age=60, must-revalidate, private");
    res.sendFile( path.join(__dirname, 'index.html') );
});


var server = app.listen(process.env.PORT || 5000, function () {
    var host = server.address().address;
    var port = server.address().port;
    console.log(`Example app listening at http://%s:%s`, host, port);
});
Run Code Online (Sandbox Code Playgroud)

简单的html文件:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>React Router test</title>
</head>
<body>
    <div id="root"></div>
    <script src="bundle.js"></script>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

在bundle.js里面我有ReactJS应用程序和客户端路由:

render((
    <Router history={browserHistory}>
        <Route path="/" component={App}>
            <Route path="about" component={About} />
            <Route path="about2" component={About2} />
            <Route path="about3" component={About3} />
            <Route path="*" component={NoMatch} />
        </Route>
        <Route path="*" component={NoMatch} />
    </Router>
), document.getElementById('root'));
Run Code Online (Sandbox Code Playgroud)

每当我尝试导航到域:port /(此路由由路由器支持)everething正常.但是当我尝试导航到更复杂的URL时,比如domain:port /// .. etc我在浏览器中遇到错误:

bundle.js:1 Uncaught SyntaxError: Unexpected token <
Run Code Online (Sandbox Code Playgroud)

looke喜欢而不是从带有index.html的静态服务器响应发送bundle.js,而在bundle.js里面有html标记.

我怎样才能解决这个问题?

谢谢!

Blo*_*nge 9

似乎存在环回,因为*规则index.html每次都在服务,并且当bundle.js找不到时,它将index.html代替服务,因此尝试解析<为javascript.

如果你愿意,那就是一种索引