我正在尝试通过webpack编译我的Sass。编译正常sass很好,但我收到错误。
Module not found: Error: Can't resolve '../img/twitter.svg' in '/Users/Steve/mywebsite/scss'
@ ./~/css-loader!./~/sass-loader/lib/loader.js!./scss/main.scss 6:94501-94530
有没有办法解决这个问题?或者有一种方法可以将sass编译器的级别设置为不那么严格,只是忽略某些错误
以下是我当前的配置。
var webpack = require('webpack');
var path = require('path');
let ExtractTextPlugin = require("extract-text-webpack-plugin");
module.exports = {
resolve: {
alias: {
'masonry': 'masonry-layout',
'isotope': 'isotope-layout'
}
},
entry: './main.js',
output: {
path: path.resolve(__dirname, './dist/dist2'),
filename: 'bundle.js'
},
module: {
rules: [
{
test : /\.(png|jpg|svg)$/,
include : path.join(__dirname, '/dist/img'),
loader : 'url-loader?limit=30000&name=images/[name].[ext]'
},
{ test: /\.js$/,
exclude: /node_modules/,
loader: "babel-loader?presets[]=es2015",
},
{
test:/\.scss$/,
use: ExtractTextPlugin.extract({
use: ['css-loader', 'sass-loader'],
})
},
{
test: /\.vue$/,
loader: 'vue-loader',
options: {
loaders: {
}
// other vue-loader options go here
}
},
]
},
plugins: [
//new webpack.optimize.UglifyJsPlugin(),
new ExtractTextPlugin('ross.css')
]
};
答案 0 :(得分:1)
您没有为webpack文件中的图像指定任何加载器。
url-loader
和file-loader
安装到 package.json 通过
npm install --save url-loader file-loader
在您的webpack配置文件中添加以下内容 -
{
test : /\.(png|jpg|svg)$/,
include : path.join(__dirname, 'img'),
loader : 'url-loader?limit=30000&name=images/[name].[ext]'
}, // inline base64 URLs for <=30k images, direct URLs for the rest
答案 1 :(得分:1)
我知道这已经很晚了,但是对于任何寻求解决方法的人来说,这个错误都可以解决。
就我而言,图像已完美地加载到模板中,但是,Webpack返回错误:open()
修复/解决方法:
将Module not found: Error: Can't resolve './path/to/assets.png'
添加到您的css-loader中,这将禁用css-loader的网址处理:
?url=false
答案 2 :(得分:1)
这是css-loader 4.x中的重大更改(根据css-loader issue 1136)。
答案 3 :(得分:0)
我在其他答案中建议url-loader
和file-loader
没有运气。我能够使用resolve-url-loader
module: {
rules: [
{ // sass / scss loader for webpack
test: /\.(sass|scss|svg|png|jpe?g)$/, //Make sure to allow all necessary file types here
use: ExtractTextPlugin.extract({
use: [
{
loader: 'css-loader',
options: {
importLoaders: 1,
minimize: true,
sourceMap: true
}
},
{
loader: 'postcss-loader',
options: {
sourceMap: true
}
},
{
loader: "resolve-url-loader", //resolve-url-loader needs to come *BEFORE* sass-loader
options: {
sourceMap: true
}
},
{
loader: "sass-loader",
options: {
sourceMap: true
}
}
]
})
}
],
},