Я выполняю рендеринг на стороне сервера для своего React JS App. Но я не могу загрузить .css и изображения в html-файл.
Моя структура каталогов
build
public
index.html
styles.css
fav.png
src
client
client.js
index.js
webpack.js
my index.htmlfile
<html>
<head>
<title></title>
<link rel="shortcut icon" href="%PUBLIC_URL%/fav.png">
<link rel="stylesheet" type="text/css" href="./styles.css" />
</head>
<body>
<div id="root"></div>
</body>
</html>
мой файл index.js (файл сервера)
import express from 'express';
import React from 'react';
import { renderToString } from 'react-dom/server';
import Home from './client/components/MyHome';
import path from 'path';
import fs from 'fs';
import Transmit from 'react-transmit';
import {createStore, applyMiddleware, compose} from 'redux';
import reducers from './client/reducers';
const store = createStore(reducers)
function handleRender(req, res) {
Transmit.renderToString(Home).then(({reactString, reactData}) => {
fs.readFile('./public/index.html', 'utf8', function (err, data) {
const document = data.replace(/<div id="root"><\/div>/,
`<div id="root">${reactString}</div>`);
res.send(document);
});
});
}
const app = express();
app.use(express.static(path.join(__dirname, 'public')));
app.get('*', handleRender);
app.listen(3000, () => {
console.log('Listening on port 3000');
});
загрузка css на webpack.js
{
test: /\.css$/,
use: ExtractTextPlugin.extract(
{ fallback: 'style-loader', use: [ 'css-loader' ] }
)
}
Проблема в том, что я запускаю свое приложение, это не загруженные файлы CSS и PNG.