Baik impor dan permintaan baik-baik saja.
@bjwulin Bagaimana cara mengimpor atau mensyaratkan di bawah file .less
?
Saya mencoba memperkenalkan gambar latar belakang di bawah file .less
.
.list {
width: 100%;
margin-bottom: .6rem;
background: url('./bg.png') center no-repeat;
}
Ketika saya mengeksekusi npm start
, konsol melaporkan kesalahan:
ERROR in ./~/css-loader?sourceMap&modules&localIdentName=[local]___[hash:base64:5]!./~/postcss-loader!./~/less-loader?{"sourceMap":true,"modifyVars":{}}!./src/routes/LoginPage.less
Module not found: Error: Cannot resolve module 'bg.png' in /Users/mcbird/workspace/cedar-mobile/src/routes
@ ./~/css-loader?sourceMap&modules&localIdentName=[local]___[hash:base64:5]!./~/postcss-loader!./~/less-loader?{"sourceMap":true,"modifyVars":{}}!./src/routes/LoginPage.less 6:304-321
Struktur dokumen adalah sebagai berikut:
File webpack.config.js
adalah sebagai berikut:
const fs = require('fs');
const path = require('path');
module.exports = function(webpackConfig, env) {
webpackConfig.babel.plugins.push('transform-runtime');
// Support hmr
if (env === 'development') {
webpackConfig.devtool = '#inline-source-map';
webpackConfig.babel.plugins.push(['dva-hmr', {
entries: [
'./src/index.js',
],
}]);
} else {
webpackConfig.babel.plugins.push('dev-expression');
}
// 引入 antd
webpackConfig.babel.plugins.push(['import', {
libraryName: 'antd-mobile',
style: 'css',
}]);
// Support CSS Modules
// Parse all less files as css module.
webpackConfig.module.loaders.forEach(function(loader, index) {
if (typeof loader.test === 'function' && loader.test.toString().indexOf('\\.less$') > -1) {
loader.include = /node_modules/;
loader.test = /\.less$/;
}
if (loader.test.toString() === '/\\.module\\.less$/') {
loader.exclude = /node_modules/;
loader.test = /\.less$/;
}
if (typeof loader.test === 'function' && loader.test.toString().indexOf('\\.css$') > -1) {
loader.include = /node_modules/;
loader.test = /\.css$/;
}
if (loader.test.toString() === '/\\.module\\.css$/') {
loader.exclude = /node_modules/;
loader.test = /\.css$/;
}
});
return webpackConfig;
};
Saya menemukan bahwa tidak masalah untuk meletakkan gambar secara terpisah di bawah src/assets/
Saat ini, url gambar di LoginPage.less
menulis jalur relatif secara langsung
.list {
width: 100%;
margin-bottom: .6rem;
background: url("../assets/bg.png");
}
https://github.com/dvajs/dva/issues/96#issuecomment -247935310
Sepertinya masalahnya sama dengan yang ini.
Setelah melakukan berbagai debugging, ditemukan bahwa path gambar dalam file *.less
harus ditemukan dari direktori root . Gambar dibawah ini:
Menurut kebiasaan kita yang biasa, umumnya langsung saja menulis background: url("./bg.png");
, tetapi di sini Anda harus kembali ke direktori root lalu melihat ke bawah.
Sudah dicoba, ada dua solusi:
.less
, gunakan .css
background: ~"url(./bg.png)" no-repeat
Anda dapat menggunakan interpolasi string untuk memperkenalkan:
1. @imgUrl : "../ star.jpg"; Tuliskan path gambar dari direktori root, jika gambar dan file yang lebih kecil, file css ada di direktori, langsung @ I'mUrl: " star.jpg ";
2. latar belakang: url ("@ {imgUrl}"); Gunakan metode interpolasi string untuk memperkenalkan sehingga Anda dapat memasukkan gambar statis, Anda juga dapat menggunakan ~ "" Latar belakang dalam tanda kutip adalah untuk menghindari kompilasi: ~ "url (' ../star .jpg ') ";
Sangat sulit untuk digunakan
background: ~"url('../star.jpg')"
Cara ini bisa digunakan dalam proyek saya, orang lain tidak bisa
background: ~ "url ('../ star.jpg')" tersedia
Tambahkan ~ awalan ke url, seperti latar belakang: ~ "url (./ bg.png)" ini tersedia
Komentar yang paling membantu
Sudah dicoba, ada dua solusi:
.less
, gunakan.css
background: ~"url(./bg.png)" no-repeat