static.json 不适用于 ReactJS 路由和 Heroku



理论上这应该可以工作,在/文件夹中添加文件/static.json,使所有内容都转到 Reactindex.html

(相关(

React 路由在本地机器中工作,但不适用于 Heroku

https://github.com/heroku/heroku-buildpack-static#configuration

就我而言,它不起作用,我得到一个Cannot GET /hello而不是接收索引.html。令人惊讶的是,如果我直接转到/index.html我会得到页面,但没有激活路线。

发生了什么,我该如何解决?

更新:尝试没有运气/static.jason/src/static.jason/client/static.jason/client/src/static.jason

/static.json

{
"routes": {
"/**": "index.html"
}
}

/client/src/index.js

import React from 'react';
import ReactDOM from 'react-dom';
import FileUpload from './FileUpload';
ReactDOM.render(
<div><FileUpload /></div>,
document.getElementById('root')
);

/client/src/FileUpload.mjs

import React, { Component } from 'react';
import { BrowserRouter as Router, Route } from 'react-router-dom';
class TextFileReader extends Component {
render() {
return (
<Router>
<div>
<Route path="/heyyo" render={() => <span>heyyo</span>} />
<Route exact path="/" render={() => <div>resting</div>} />
<Route path="/what" render={() => <div>what</div>} />
NO ROUTES HERE
</div>
</Router>
)
}
}
export default TextFileReader;

最后,重新阅读更好 这个反应路由在本地机器中工作,但不适用于 Heroku 我已将此行添加到我的 Express 中

app.get('/*', (req, res) => {
let url = path.join(__dirname, '../client/build', 'index.html');
if (!url.startsWith('/app/')) // we're on local windows
url = url.substring(1);
res.sendFile(url);
});

一旦部署到 Heroku,它就可以:)

最新更新