Mat*_*bst 3 browser-history node.js reactjs react-router react-routing
我当前的 server.js:
let express = require('express');
let harp = require('harp');
let path = require('path');
let app = express();
app.use(express.static(__dirname + "/dist"));
app.use(harp.mount(__dirname + "/dist"));
let port = process.env.PORT || 3333;
app.listen(port, () => console.log("Listening on port " + port) );
// ... other routes for data fetching ...
// For browserHistory: https://github.com/reactjs/react-router/blob/1.0.x/docs/guides/basics/Histories.md
app.get('*', (req, res) => {
res.sendFile(path.resolve(__dirname, 'dist', 'index.html'));
});
Run Code Online (Sandbox Code Playgroud)
当我在mysite.com/. 但是,如果我输入mySite.com/someRoute,它会中断。具体来说,我在控制台中看到以下内容:
Resource interpreted as Stylesheet but transferred with MIME type text/html: "http://localhost:3333/dashboards/styles/normalize-3.0.3.min.css".
...
Uncaught SyntaxError: Unexpected token <
...
Run Code Online (Sandbox Code Playgroud)
我的理解是,为了解决这个问题,我还需要实现服务器端渲染。那是准确的吗?如果是这样,那么所需的最低设置是什么?我看过的所有指南都比我现在想要的要深入得多。
(如果有帮助,我可以升级依赖项。)react: 0.14.7 react-router: 1.0.3
假设您的 css 文件在您的静态文件夹中,并且该文件的路径与下面的路径相匹配,__dirname + "/dist"并且您不是/someRoute在您的应用程序中导航,而是通过地址栏将浏览器定向到该地址,我怀疑问题是您正在为index.html 当您需要提供 css 文件时。(您给了我们浏览器报告的错误,但不是服务器对该请求的实际响应。)
这是由于将浏览器指向mySite.com/someRoute. /someRoute当使用相对 url 时,浏览器现在认为是所有请求的根路径。所以如果 index.html 页面需要assets/css/mysite.css. 浏览器实际上会发送一个请求someRoute/assets/css/mysite.css。您可以通过查看浏览器中的网络选项卡来验证这一点。
为了解决这个问题,设置base标签/在你的<head>。这将告诉浏览器不要在相对 url 上添加任何路径的前缀。
例子:
<head>
<base href="/">
<link >
</head>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1314 次 |
| 最近记录: |