sass - 加载器列表中的元素应该有 'loader' 或 'loaders' 与 sass-loader webpack

标签 sass loader webpack webpack-dev-server webpack-style-loader

我的 webpack 加载器数组中有这个加载器:

{ test: /\.scss$/, exclude: /node_modules/, loaders: ExtractTextPlugin('style-loader', 'css-loader!sass-loader') }

我正在尝试让 webpack 将我的 SCSS 构建为 CSS,但出现此错误:

/Users/bli1/Development/Django/CL/cherngloong/cherngloong/cherngloong/node_modules/webpack/node_modules/webpack-core/lib/LoadersList.js:60
    throw new Error("Element from loaders list should have one of the fields 'loader' or 'loaders'");
    ^

Error: Element from loaders list should have one of the fields 'loader' or 'loaders'
    at getLoadersFromObject (/Users/bli1/Development/Django/CL/cherngloong/cherngloong/cherngloong/node_modules/webpack/node_modules/webpack-core/lib/LoadersList.js:60:8)
    at LoadersList.<anonymous> (/Users/bli1/Development/Django/CL/cherngloong/cherngloong/cherngloong/node_modules/webpack/node_modules/webpack-core/lib/LoadersList.js:78:12)
    at Array.map (native)
    at LoadersList.match (/Users/bli1/Development/Django/CL/cherngloong/cherngloong/cherngloong/node_modules/webpack/node_modules/webpack-core/lib/LoadersList.js:70:19)
    at NormalModuleFactory.<anonymous> (/Users/bli1/Development/Django/CL/cherngloong/cherngloong/cherngloong/node_modules/webpack/lib/NormalModuleFactory.js:109:65)
    at /Users/bli1/Development/Django/CL/cherngloong/cherngloong/cherngloong/node_modules/webpack/node_modules/async/lib/async.js:697:13
    at /Users/bli1/Development/Django/CL/cherngloong/cherngloong/cherngloong/node_modules/webpack/node_modules/async/lib/async.js:52:16
    at done (/Users/bli1/Development/Django/CL/cherngloong/cherngloong/cherngloong/node_modules/webpack/node_modules/async/lib/async.js:248:21)
    at /Users/bli1/Development/Django/CL/cherngloong/cherngloong/cherngloong/node_modules/webpack/node_modules/async/lib/async.js:44:16
    at /Users/bli1/Development/Django/CL/cherngloong/cherngloong/cherngloong/node_modules/webpack/node_modules/async/lib/async.js:694:17

这是我的完整 webpack 配置:

var path = require('path');
var webpack = require('webpack');
var BundleTracker = require('webpack-bundle-tracker');
var ExtractTextPlugin = require("extract-text-webpack-plugin");

module.exports = {
  entry: [
    './app/index'
  ],

  output: {
      path: path.resolve('./public/bundles/'),
      filename: "[name]-[hash].js",
  },

  plugins: [
    new BundleTracker({filename: './webpack-stats.json'}),
  ],

  module: {
    loaders: [
        { test: /\.css$/, exclude: /node_modules/, loader: 'style!css' },
        { test: /\.json$/, loader: 'json-loader' },
        { test: /\.jsx$/, loaders: ['react-hot', 'babel-loader'], include: path.join(__dirname, 'app') },
        { test: /\.es6$/, exclude: /node_modules/, loader: 'babel-loader?stage=0&optional=runtime'},
        { test: /\.js$/, exclude: /node_modules/, loader: 'babel-loader?stage=0&optional=runtime'},
        { test: /\.scss$/, exclude: /node_modules/, loaders: ExtractTextPlugin('style-loader', 'css-loader!sass-loader') }
    ]
  },
}

最佳答案

Sokra 在此处提供了如何使用 ExtractTextPlugin 的示例:https://github.com/webpack/extract-text-webpack-plugin/blob/master/example/webpack.config.js

如您所见,您的示例与他的示例之间存在一些差异。

  • ExtractTextPlugin 构造函数在“plugins: [ ]”数组中用new 调用
  • 插件在loaders数组中的使用方式是调用静态方法.extract(),而不是简单的调用插件构造函数
  • “loader object”中的引用是针对“loader:”属性的,而不是如您所说的“loaders:”(loaders 是一个选项,但需要一个数组)

希望对您有所帮助!

关于sass - 加载器列表中的元素应该有 'loader' 或 'loaders' 与 sass-loader webpack,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33316484/

相关文章:

webpack - 如何防止webpack在加载程序的每个错误上打印较长的文件列表(在多文件条目中)

javascript - Eslint 未检测到 React 组件的定义属性类型

css - 格式 ('embedded-opentype' ) 和格式 ('eot' 之间的区别)

javascript - 如何使用 Angular 7 更改 CSS 类

sass - @each 带索引的循环

actionscript-3 - 访问加载的 .swf 文件中的函数?

typescript - 使用 webpack、threejs 示例和 typescript?

html - 关于 CSS 网格中奇怪对象放置的问题

assembly - 带汇编器的 CPU 模拟器,带简单汇编的链接器

javascript - 在 React Native 中单击按钮时显示加载程序