0

我创建了一个带有React的小应用程序并设置了一些简单的路由。它在我的本地主机上的客户端上正常工作。所有JS代码捆绑在一个文件中,并通过index.html文件访问。当我部署到服务器时,对路由的请求不起作用,因为一切都是客户端。React SSR:错误未捕获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(由react的创建者提供)。它将消除所有尝试手动执行此操作的问题。如果你最终想要手动管理它,你可以使用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存储库。

相关问题