我在浏览器历史记录中使用react-router。这个功能:
app.get('*', function (request, response){
response.sendFile(path.join(__dirname + "/public/index.html"))
})
应该发送Index.html,因为路由发生在客户端与react-router。 但不知怎的,我的index.html被服务器误解了,我得到了这个错误:
未捕获的SyntaxError:意外的令牌<
我不知道这里的问题是什么。文件路径错了吗?我的树看起来像这样:
/app
/app/myJavascriptStuff.js
/public
/public/index.html
/moreStuffThatsNotRelevant
/server.js <- my express file
没有上述功能,我的页面通常会回复:
无法获取/无论
在localhost:3000上没有发生的每个页面刷新(例如localhost:3000 /无论如何)
因为我知道我很难描述事物,here是指向存储库的链接。
非常感谢帮助。 :)
答案 0 :(得分:1)
首先,您没有使用webpack构建bundle.js文件。在你可以服务之前,你需要先建立它。
将package.json脚本更改为
"scripts": {
"build": "webpack --progress --color --config webpack.config.js --watch",
"start": "node server.js"
}
并在运行服务器之前运行命令npm run build
。
如果webpack bundle.js没有在/public/build
内创建,那么在public中创建一个目录build
并再次运行上面的命令。
这可以解决您的问题。
答案 1 :(得分:0)
问题可能是因为即使浏览器要求您提供 bundle.js
或 style.css
,您也会发送 index.html
的每个请求。通过
app.get('*',function(request,response){&#xA; response.sendFile(path.join(__ dirname +“/) public / index.html“))&#xA;});&#xA;
&#xA;&#xA; 定义 public
文件夹可以提供这些文件的地方,比如public(你的github repo中有index.html)。让webpack在该文件夹中生成 bundle.js
。还要在 index.html
中指向该文件夹中的 bundle.js
。
> server.js
你需要做一些改变。当浏览器询问时,让 express
使用公共路径来提供这些文件。
一个例子可以是 -
&#xA; &#xA; const app = express();&#xA; const publicPath = express.static(path.join(__ dirname,'public'),{redirect:false});&#xA; &#xA; const indexPath = path.join(__ dirname,'public / index.html');&#xA; app.use(publicPath);&#xA; app.get('/',function(_,res) ){res.sendFile(indexPath)});&#xA; app.get('*',function(_,res){res.sendFile(indexPath)});&#xA;
&#XA;