2017-12-18 101 views
0

我使用webpack dev服务器来运行本地Web服务器。Webapck服务器的路由无法获取/ page

当我使用浏览器输入网址/localhost:8080/sign_in,我得到了错误。

无法获取/ sign_in

我在webpack.config.js添加对象historyApiFallback: true,并得到解决。

devServer: { 
    inline: true, 
    port: 8080, 
    historyApiFallback: true, 
    headers:{ 
     'Access-Control-Allow-Origin': '*', 
     "Access-Control-Allow-Methods": "POST, GET, OPTIONS" 
    } 
    } 

但是,当我编译webpack -p和运行node server.js再次发生同样的错误。

其次server.js代码

const express = require('express'); 
const path = require('path'); 
const port = process.env.PORT || 8080; 
const app = express(); 
const history = require('connect-history-api-fallback'); 

const indexPath = path.join(__dirname, './public/index.html') 
const publicPath = express.static(path.join(__dirname, '/public')) 

app.use(publicPath) 
app.use(history()) 

app.get('/', (req, res) => { 
    res.sendFile(path.resolve(indexPath)); 
}); 



app.listen(port); 

我怎么固定呢?

+0

你只定义了路径'/'。你也需要添加'/ sign_in'。 – Seblor

+0

@Seblor我在我的应用程序中使用了react-routes,所以每个页面都依赖于/index.html –

回答

1

您尚未定义登录路线。

app.get('/sign-in', (req, res) => { 
    res.sendFile(path.resolve( PATH )); 
}); 

由于服务器端渲染不活动,您不能直接登录。你必须去索引并点击链接,这样react-router才能到达那条路径

+0

我如何设置所有路由依赖于'index.html'就像rails setted routes'get'* path'一样: “回家#index''? –

+1

''app.get('/ *',(req,res)=> { res.sendFile(path.resolve(indexPath)); });' 这将使所有的路由去索引 – illiteratewriter

+0

谢谢兄弟, 有用! –