Hay varios hilos sobre este tema, pero ninguno de ellos me ha dado ningún resultado hasta ahora. Como sugiere el título, mi proyecto React contiene una etiqueta img, donde se proporciona un png como fuente.
Hasta ahora, he intentado usar el requisito de la ruta E importarlo como una variable. También agregué los cargadores en la configuración de mi paquete web, como puede ver a continuación.
También es de destacar que las dimensiones están realmente cargadas, y al hacer clic derecho para verificar la fuente de la imagen, el sitio web devuelve un No se puede OBTENER / [objeto% 20Objeto]
¡Cualquier idea es muy apreciada!
¡Gracias de antemano!
Etiqueta de imagen
<img src={require('./mug1.png').default} className="mugImage" />CSS
.mugImage { object-fit: cover; width: 100%; height: 100%; z-index: 10; }paquete web
const HtmlWebPackPlugin = require("html-webpack-plugin"); const htmlPlugin = new HtmlWebPackPlugin({ template: "./src/index.html", filename: "./index.html" }); module.exports = { mode: "development", resolve: { fallback: { assert: require.resolve('assert'), crypto: require.resolve('crypto-browserify'), http: require.resolve('stream-http'), https: require.resolve('https-browserify'), os: require.resolve('os-browserify/browser'), stream: require.resolve('stream-browserify'), }, }, module: { rules: [{ test: /\.js$/, exclude: /node_modules/, use: { loader: "babel-loader" } }, { test: /\.css$/, use: ["style-loader", "css-loader"] }, { test: /\.(jpg|png|svg)$/, use: { loader: 'url-loader', options: { limit: 25000 } } }, { test: /\.(png|jpe?g|gif)$/i, use: [ { loader: 'file-loader', options: { esModule: false, }, }, ], }, ] }, plugins: [htmlPlugin] };No es necesario utilizar ambos cargadores. Ambos cargadores url-loader y file-loader funcionan de la misma manera, pero la diferencia es que url-loader se puede configurar con un limit de archivos más pequeños para insertarlos como DataURL. Me gusta
data:image/png;base64,ZXhwb3J0IGRlZmF1bHQgX193ZWJwYWNrX3B1YmxpY19wYXRoX18gKyAiNDRlYTU1N2FlYmM4ZTM2Y2EyOGQ2N2RlM2YwMWM2MWMucG5nIjs= Otra cosa es que file-loader emite activos al directorio de salida en la compilación. Si elige usar url-loader
module.exports = { ... module: { rules: [ ... { test: /\.(jpe?g|png|svg)$/, use: [{ { loader: 'url-loader', options: { limit: 25000 //asset size limit in byte name: '[name].[ext]', outputPath: 'assets/images/' }, }] }, ] }, plugins: [...] };Los activos de tamaño inferior al configurado se alinearán con DataURL, no se emitirá ningún activo. Los mayores se manejarán como un archivo separado. para
file-loaderintente
module.exports = { ... module: { rules: [ ... { test: /\.(jpe?g|png|svg)$/, use: [{ { loader: 'file-loader' }] }, ] }, plugins: [...] };esMoulde: false . Eliminar de su código.