Я создал проект React с create-react-app
с Node.js в качестве бэкэнда.Я передаю статические файлы с Node.js.
Я пытался выяснить это пару часов.Когда я запускаю в Docker и отправляю приложение в Heroku, я иногда получаю эту ошибку: Ошибка: ENOENT: нет такого файла или каталога, stat '/usr/src/app/server/build/index.html'
Это странно ?Если я нажимаю вокруг, все работает.Внезапно он не работает, и он говорит мне, что не может найти index.html
?
И если я снова зайду на страницу и снова нажму вокруг, все работает.Почему это происходит?
Мой код для обслуживания статических файлов в файле node.js server.js
:
// Serve static files if in production or running in docker
if ( process.env.NODE_ENV === "production" || process.env.NODE_ENV === "docker" ) {
// Set static folder
app.use("/", express.static("build"));
app.get("*", (req, res) => {
res.sendFile(path.resolve(__dirname, "build", "index.html"));
});
}
Структура моей папки:
И мои реактивные маршрутизаторы:
import Homepage from "./pages/Homepage";
import Dashboard from "./pages/Dashboard";
import Leaderboard from "./pages/Leaderboard";
import Signup from "./pages/Signup";
import Login from "./pages/Login";
import About from "./pages/About";
import Quiz from "./pages/Quiz";
import Locked from "./containers/Locked";
import WebSocketService from "./services/WebSocketService";
// Add the redux.dispatch function to WebSocketService
WebSocketService.setDispatch(store.dispatch);
ReactDOM.render(
<Provider store={store}>
<Router>
<Switch>
<Route exact path="/" component={Homepage} />
<Route exact path="/signup" component={Signup} />
<Route exact path="/login" component={Login} />
<Route exact path="/about" component={About} />
{/* Locked */}
<Locked>
<Route exact path="/leaderboard" component={Leaderboard} />
<Route exact path="/dashboard" component={Dashboard} />
<Route exact path="/play/:quizId" component={Quiz} />
</Locked>
{/* 404 */}
<Redirect to="/" />
</Switch>
</Router>
</Provider>,
document.getElementById("root")
);
В режиме разработки все работает нормально, но на производстве я получаю эти проблемы.Когда я обновляю страницу в режиме разработки, я все еще на странице.Если я обновляюсь в производственном режиме, я также получаю ту же ошибку: Ошибка: ENOENT: нет такого файла или каталога, stat '/usr/src/app/server/build/index.html'
Есть линастроить я могу, чтобы избежать этого?Спасибо за помощь!