Опция '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х, и у меня больше нет этой проблемы.

Другие вопросы по тегам