私のリアクションアプリケーションをサーバーにレンダリングしていますが、画像を取得しようとしたときに404が見つかりません。画像のディレクトリに移動しようとすると、404が表示されます。なぜですか? 404 localhost:8000/src/img
に見つかりませんこれは私の画像がどこに住んでいるのですか?サーバー側のレンダリング404がすべての画像に見つかりません
server.js
app.use(express.static(path.join(__dirname, './src', '/img')));
app.get('*', (req, res) => {
const error =() => res.status(404).send('404');
const htmlFilePath = path.join(__dirname, './', 'index.html');
fs.readFile(htmlFilePath, 'utf8', (err, htmlData) => {
if(err) {
error()
} else {
match({ routes, location: req.url }, (err, redirect, renderProps) => {
if(err) {
error()
} else if(redirect) {
res.redirect(302, redirect.pathname + redirect.search);
} else if(renderProps) {
const createStoreWithMiddleware = applyMiddleware(promise)(createStore);
const store = createStoreWithMiddleware(reducers);
const RouterContext = react.createElement(reactRouter.RouterContext, renderProps);
const provider = react.createElement(Provider, { store: store }, RouterContext);
const ReactApp = renderToString(provider);
const RenderedApp = htmlData.replace('{{SSR}}', ReactApp);
res.status(200).send(ReactApp);
} else {
error(); //Always enters this when trying to render images.
}
});
}
});
});
私はそれが問題ではないと思います。私の一致方法では、自動的にエラーを表示するelse文を入力します。 – joethemow
これはreq.urlとルートを一致させようとしていますが、ルートではなく単なるイメージパスです。 – joethemow
まあ、明白な答えは、 'redirect'と' renderProps'は 'undefined'なので、あなたは落としてエラーを取得します。そしてそのポイントはまだ立っています。あなたのマシンでは、画像は '/ src/img'に存在するかもしれませんが、' localhost:8000/src/img'は静的なパスではありません。あなたがやろうとしていることが分からない限り、必要なコードをすべて記入してください。 – mherzig