使用url-loader的内联图像以用于SSR React App

时间:2019-04-26 08:07:16

标签: webpack babel create-react-app ssr urlloader

我已将SSR添加到create-react-app中。它工作正常,但是我对CRA内联的较小图像有问题,但是renderToString仍然认为是磁盘上的文件,因此在运行SSR版本时它将是404。

我猜我设置SSR服务器的配置是错误的,但是我不确定如何添加url-loader,如果真的是我应该使用的url-loader,我不确定。

我使用此配置引导服务器。有人可以帮我,以便this和renderToString也可以内嵌小图像吗?

const md5File = require('md5-file');
const path = require('path');

const ignoreStyles = require('ignore-styles');
const register = ignoreStyles.default;

const extensions = ['.gif', '.jpeg', '.jpg', '.png', '.svg'];

register(ignoreStyles.DEFAULT_EXTENSIONS, (mod, filename) => {
    if (!extensions.find(f => filename.endsWith(f))) {
        // If we find a style
        return ignoreStyles.noOp();
    } else {
        // If we find an image
        const hash = md5File.sync(filename).slice(0, 8);
        const bn = path.basename(filename).replace(/(\.\w{3})$/, `.${hash}$1`);

        mod.exports = `/static/media/${bn}`;
    }
});

require('@babel/polyfill');
require('@babel/register')({
    ignore: [/\/(build|node_modules)\//],
    presets: ['@babel/preset-env', '@babel/preset-react'],
    plugins: [
        '@babel/plugin-syntax-dynamic-import',
        'dynamic-import-node',
        'react-loadable/babel'
    ]
});

require('./server');

我也可以禁用客户端应用程序中的内联功能,但是我不想弹出,所以我也不知道如何解决这个问题。

0 个答案:

没有答案