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')
]
};
私はこれが遅いことを知っていますが、このエラーの回避策を探している人にとっては。私の場合、画像はテンプレートに完全に読み込まれていましたが、Webpackはエラーを返していました:Module not found: Error: Can't resolve './path/to/assets.png'
修正/回避策:
追加 ?url=false
css-loaderに、css-loaderによるURL処理を無効にします:
...
{
loader: "css-loader?url=false"
},
...
他の回答で示唆されているように、私は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
}
}
]
})
}
],
},
Webpackファイル内の画像のローダーを指定していません。
url-loader
およびfile-loader
to your package.jsonvia
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