Webpack - les images de fond ne charge pas
Je suis assez nouveau dans webpack, mais ayant quelques problèmes avec les css-chargeur ou d'un fichier loader.
Je suis en train de charger une image de fond d'écran mais ça ne fonctionne pas tout à fait droit. L'image de fond d'écran n'est pas affiché, même si le devtools montrer la background-image
style.
Si je copie le background-image
style à la element.style
bloc, tout fonctionne bien. Ai-je fait une erreur stupide quelque part?
Le corps de la balise doit avoir une image d'arrière-plan. Le style apparaît dans les outils de développement et il n'y a pas d'erreurs:
Je peux charger le fichier 5a09e4424f2ccffb6a33915700f5cb12.jpg
, mais le corps n'a pas de fond.
Si j'copiez et collez manuellement css ligne element.style
dans les DevTools, tout fonctionne:
Ce qui se passe si je bundle avec webpack-dev-server
ou tout simplement webpack
et en Chrome et Firefox.
D'autres styles, comme body { background-color: red }
beau travail.
C'est le webpack.config.js:
const path = require('path');
module.exports = {
"entry": [
'./src/index.js'
],
"output": {
"path": path.join(__dirname, 'build'),
"filename": "bundle.js"
},
devtool: "source-map",
"module": {
"loaders": [
{
"test": /\.scss$/,
"loaders": ["style", "css?sourceMap", "sass?sourceMap"]
},
{
test: /\.jpg$/,
loader: "file-loader"
}
]
},
devServer: {
contentBase: './build'
}
};
- Avez-vous trouvé une solution à ce à la fin? Je suis d'avoir exactement le même problème
Vous devez vous connecter pour publier un commentaire.
Il y a actuellement un bug lors de l'utilisation de sourceMap avec css-loader. Retrait sourceMap de votre css chargeur devrait résoudre le problème.
Problème est lié à: https://github.com/webpack/css-loader/issues/296
Il semble que les navigateurs ne sont pas friands des chemins relatifs pour les images de fond sur la balise body. (voir aussi CSS image d'arrière-plan qui ne se chargent pas et css background-image ne fonctionne pas correctement)
Modifiant le code légèrement semblait faire l'affaire:
background-image: url(http://localhost:8080/5a09e4424f2ccffb6a33915700f5cb12.jpg)
. Ce n'est pas l'idéal.Ni l'un ni l'résoudre la question, mais ne vous obtenir décoller.
<body>
, il se produit également lorsque vous essayez d'appliquerbackground-image
à un<div>
ou de tout autre élément. Merci encore!Après aux prises avec ce problème un jour, j'ai enfin compris comment réécrire des url dans les css à l'aide postcss
webpack.config.js
postcss.config.js
Webpack génère le css et
<link>
s viablob:
url, ce qui semble poser des problèmes avec le chargement des images d'arrière-plan.Développement de la solution de contournement
Inline les images via le fichier-chargeur de développement (crée de grandes base64 chaîne dans le css)
Mais permet à chaud, rechargement.
De Production solution de contournement
Utiliser le ExtractTextPlugin pour servir le css dans un fichier normal.
Où est votre publicPath entrée en sortie? par exemple:
publicPath: 'http://localhost:5000/', //chemin absolu req ici pour les images dans les css pour travailler avec sourcemaps sur. Doit être numérique réelle ip pour accéder sur le réseau local.
https://github.com/webpack/docs/wiki/configuration#outputpublicpath
Essayez en utilisant, par exemple:
css-loader dans webpack:
Résultat dans le bundle.css est:
Vous pouvez également essayer d'utiliser le
~
en face de vos fichiers afin de les webpack revient à l'chargeursrequire
pour résoudre l'url.