好吧,我已经使用React和React-Router制作了一个SPA,并将它推送到github页面,但是当我刷新或在浏览器中单击时,我写入的任何路线都没有工作。当我在本地提供页面时遇到了同样的问题,但后来跟进到this SO answer,并创建了一个server.js文件,该文件在每个路由处提供重定向到我的静态HTML页面。下面是该文件的样子:我可以用github-pages网站的react-router创建路由吗?
"use strict";
let express = require('express');
let path = require('path');
let app = express();
app.use(express.static('public'));
app.get('/contact', function(req, res){
res.sendFile('public/index.html', { root: __dirname });
})
app.get('/about', function(req, res){
res.sendFile('public/index.html', { root: __dirname });
})
app.get('*', function(req, res){
res.sendFile('public/index.html', { root: __dirname });
})
app.listen(8080, function(){
console.log('Listening on port 8080!')
})
现在,我的问题是,当我推项目GitHub上所有的逻辑都忽略页面,GitHub的路由接管,我还没有能够同样的问题刷新或直接前往/contact
或。我知道这似乎是一个明显的问题,因为github页面仅设计为托管静态网站,但我曾看到有人暗示为其他方式创建每个路由的静态页面,例如this reddit post中的答案,但我不知道该怎么做。
我还应该提到,因为我已经有一个网站在user-name.github.io
,所以这个网站正在主持user-name.github.io/projects
,使得我的/
路线。我不知道这是否有所作为,我只是想我应该提到它。
我想我已经用尽了每一个选项来尝试成功地在gh页面上托管这个项目,我知道有像Single Page Apps for GitHub Pages这样的项目可以解决这个问题,但是我只想看看有没有人有在诉诸此事之前,有幸能够做到这一点。
仅供参考,这里是我的app.js(含路由逻辑):
import React, {Component} from 'react';
import {render} from 'react-dom';
import {Router, Route, browserHistory, IndexRoute} from 'react-router';
//Import custom components
import About from '../components/about.js';
import Contact from '../components/contact.js';
import Sidebar from '../components/sidebar.js';
import Imagelist from '../components/image-list.js';
render(
<Router history={browserHistory}>
<Route path="/" component={Sidebar}>
<IndexRoute component={Imagelist}/>
<Route path="/about" component={About}/>
<Route path="/contact" component={Contact}/>
</Route>
</Router>,
document.getElementById('content')
);
任何帮助,这将是非常赞赏&高兴,如果有帮助的,包括更多的代码。
Express是一个后台框架编写API的路线...你怎么努力实现与GH静态网页?你想在另一个域中将页面指向api? –
我用快递,因为那是什么在另一个建议SO回答,但,是的,我知道我不能包括任何这样的逻辑,当我把它推到GH-页面。试图查看是否有任何建议为每条路线创建一个静态页面。 –