2017-09-22 6 views
1

Je me bats avec webpack depuis plus d'une journée maintenant pour obtenir les cartes sources de mon fichier scss chargé via ExtractTextPlugin.Webpack Sass-loader et Css-loader 'sourceMap' provoquant l'échec

Chaque fois que je reçois l'erreur:

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) 

Mon module config webpack se présente comme suit:

{ 
      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 
         } 
        }]}) 
     }, 

Mes versions chargeur sont: css-chargeur: 0.28.7 sass-loader: 4.1.1 style-chargeur: 0.13.2 nœud-sass: 3.13.1 webpack: 2.2.1 extrait de texte webpack-plugin: 2.1.0

Lorsque je supprime la propriété Sourcemap ou supprimer la propriété de la chaîne comme ceci:

{ 
      test: /\.(scss)$/, 
      use: ExtractTextPlugin.extract({ 
       fallback: 'style-loader', 
       use: 'css-loader!sass-loader'}) 
     } 

Il fonctionne très bien. Si j'ai ajouté "? SourceMap" à la fin des chargeurs, cela casse aussi la construction. D'après ce que je lis, il semble que ce soit un problème de version mais je ne suis pas sûr. Toutes les pensées seraient grandement appréciées.

Répondre

0

Il s'agit d'un problème de version. webpack.LoaderOptionsPlugin a été créé pour faciliter la transition vers la nouvelle syntaxe. À l'origine, les chargeurs étaient uniquement autorisés à accepter les options/arguments sous la forme d'une chaîne. Webpack a mis à jour la syntaxe mais certains chargeurs n'ont pas rattrapé ou vous avez une ancienne version ou il se peut que vous ayez besoin de mettre à jour votre version de webpack. J'ai rencontré un problème similaire lors de la mise à jour de webpack de 1x à 2x. Finalement, j'ai mis à jour à 3x et n'ai plus ce problème.