#javascript #node.js #reactjs #react-router #development-environment
Вопрос:
Я работаю над проектом react, но мой босс хочет, чтобы я добавил стороннюю index.html файл в проект. Идея состоит в том, чтобы создать кнопку, которая перенаправляет на эту другую страницу. Я создал конечную точку на сервере
app.get('/openscad', function(req, res) { res.sendfile(path.join(__dirname, '/openscad/index.html')); });
чтобы вернуть index.html файл каждый раз, когда запрашивается /openscad. Я запустил сервер и реагирую (на разработку)
npm start node server.js
и я отправляю прокси-запросы с локального хоста:3000 на сервер (локальный хост:5000). Когда я получаю запрос /openscad непосредственно на localhost:5000, он отображает мой html, но когда я запрашиваю его на localhost:3000, он не отображается. Я просто получаю состояние http 200 ОК, но html не возвращается.
Это мой файл индекса реакции
import React, { Component } from "react"; import ReactDOM from 'react-dom'; import Viewer from './viewer'; import Login from './login'; import { BrowserRouter as Router, Switch, Route } from "react-router-dom"; import HomePage from "./homePage"; import ProfilePage from "./profilePage"; class App extends Component { render() { return ( lt;Routergt; lt;Switchgt; lt;Route path="/viewer"gt; lt;Viewer /gt; lt;/Routegt; lt;Route path="/access"gt; lt;Login /gt; lt;/Routegt; lt;Route path="/profile"gt; lt;ProfilePage /gt; lt;/Routegt; lt;Route path="/home"gt; lt;HomePage /gt; lt;/Routegt; lt;/Switchgt; lt;/ Routergt; ) } } ReactDOM.render( lt;React.StrictModegt; lt;App /gt; lt;/React.StrictModegt;, document.getElementById('root') );
Я хочу, чтобы он отображался в процессе разработки, поэтому мне не нужно создавать свой проект каждый раз, когда я хочу протестировать эту новую функцию. Возможно ли сделать рендеринг моего index.html при запросе на него localhost:3000?
Ответ №1:
Насколько я знаю, сервер приложений create react просто возвращает index.html для каждого запроса, который не является статическим файлом. Попробуйте разместить свой сторонний html-код внутри /общедоступный, а затем перенаправить на полный путь ( /public/other.html
).
Если это не сработает, вам придется либо прокси-сервер, либо, возможно, извлечь, чтобы изменить настройки.