Опция 'sourceMap' в Webpack Sass-loader и Css-loader вызывает сбой
Я боролся с веб-пакетом уже более суток, чтобы получить исходные карты для моего файла scss, загруженного через ExtractTextPlugin.
Каждый раз, когда я получаю ошибку:
TypeError: Path must be a string. Received undefined
at assertPath (path.js:7:11)
at Object.relative (path.js:538:5)
at Object.onRender (C:\Git\app\node_modules\sass-loader\index.js:282:42)
at Object.<anonymous> (C:\Git\app\node_modules\async\dist\async.js:2244:31)
at Object.callback (C:\Git\app\node_modules\async\dist\async.js:906:16)
at options.success (C:\Git\app\node_modules\node-sass\lib\index.js:303:32)
Мой модуль конфигурации webpack выглядит следующим образом:
{
test: /\.(css)$/,
use: ExtractTextPlugin.extract({
fallback: 'style-loader',
use: 'css-loader'})
},
{
test: /\.(scss)$/,
use: ExtractTextPlugin.extract({
fallback: 'style-loader',
use: [
{
loader: 'css-loader',
options: {
sourceMap: true
}
},
{
loader: 'sass-loader',
options: {
sourceMap: true
}
}]})
},
Мои версии загрузчика: css-loader: 0.28.7 sass-loader: 4.1.1 style-loader: 0.13.2 node-sass: 3.13.1 webpack: 2.2.1 extract-text-webpack-plugin: 2.1.0
Когда я удаляю свойство sourceMap или удаляю свойство из строки, вот так:
{
test: /\.(scss)$/,
use: ExtractTextPlugin.extract({
fallback: 'style-loader',
use: 'css-loader!sass-loader'})
}
Работает просто отлично. Если я добавил "? SourceMap" в конец загрузчиков, это также нарушает сборку. Из того, что я продолжаю читать, похоже, что это может быть проблемой управления версиями, но я не уверен. Любые мысли будут с благодарностью.
2 ответа
Оказывается, я нашел исправление, которое сработало здесь: https://github.com/bholloway/resolve-url-loader/issues/33
Я понятия не имею, почему это сработало, что меня как-то беспокоит. Если у кого-то есть мысли о том, почему это сработало, я бы хотел это услышать.
Это проблема с версиями. webpack.LoaderOptionsPlugin
был создан, чтобы помочь с переходом на новый синтаксис. Первоначально, загрузчикам разрешалось принимать опции / аргументы только как строку. Webpack обновил синтаксис, но некоторые загрузчики не догнали, или у вас более старая версия, или вам может потребоваться обновить версию Webpack. Я столкнулся с подобной проблемой, когда обновлял веб-пакет с 1х до 2х. В конце концов, я обновился до 3х, и у меня больше нет этой проблемы.