Подтвердить что ты не робот

Конфигурация Webpack имеет неизвестное свойство 'preLoaders'

Я изучаю webpack с нуля. Я узнал, как связать файлы javascript с требованием. Я собираю и уменьшаю файлы js, и я слушаю изменения с помощью часов. Я настраиваю загрузчиков для преобразования моих sass файлов в css. Но когда я пытаюсь настроить листинг с помощью jshint-loader, у меня возникают проблемы.

    module: {
preLoaders: [
        {
            test: /\.js$/, // include .js files
            exclude: /node_modules/, // exclude any and all files in the node_modules folder
            loader: "jshint-loader"
        }
],

loaders: [
  {
    test: /\.scss$/,
    loader: 'style-loader!css-loader!sass-loader'
  },
  {
    test: /\.js$/,
    loader: 'babel-loader',
    exclude: /node_modules$/,
    query: {
      presets: ['es2015']
    }
  }
],

}

Вот ошибка

Неверный объект конфигурации. Webpack был инициализирован с использованием объекта конфигурации, который не соответствует схеме API.  - configuration.module имеет неизвестное свойство preLoaders. Эти свойства действительны:    объект {exprContextCritical?, exprContextRecursive?, exprContextRecursive?, exprContextRecExp?, exprContextRequest?, loaders?, noParse?, rules?, unknownContextCritical?, unknownContextRecursive?, unknownContextRegExp?, unknownContextRequest?, unsafeCache?, wrappedContextCritical?, wrappedContextRecursive?, wrappedContextRegExp? }    Опции, влияющие на нормальные модули (NormalModuleFactory).

4b9b3361

Ответ 1

Вы, очевидно, пытаетесь использовать примеры для webpack v1 с webpack v2. Прямо из журнала изменений:

  module: {
-   preLoaders: [
+   rules: [
      {
        test: /\.js$/,
+       enforce: "pre",
        loader: "eslint-loader"
      }
    ]
  }

Ответ 2

Начиная с v2.1-beta.23, раздел загрузчиков переименовывается в правила, а pre/postLoaders теперь определяется для каждого правила со свойством принудительного применения.

Так что просто переименуйте preLoaders в rules и вам будет хорошо ;-)

Ответ 3

Сначала удалите веб-пакет

npm uninstall webpack --save-dev

с последующим

npm install [email protected] --save-dev

Ответ 4

если вы используете webpack 2, тогда вы можете использовать тег "pre" в массиве загрузчиков, и это будет работать как предварительная загрузка. Подробнее см. ниже код

module: {
    loaders: [
        {
            test: /\.js$/,
            exclude: /node_modules/,
            loader: 'jshint-loader',
            //this is similar to defining a preloader
            enforce: 'pre'
        },
        {
            test: /\.es6$/,
            exclude: /node_modules/,
            loader: "babel-loader"
        }
    ]

},

Ответ 5

используйте вместо этого. /webpack.config.js

 var path = require('path');

module.exports = {
   entry: './main.ts',
   resolve: {
     extensions: ['.webpack.js', '.web.js', '.ts', '.js']
   },
   module: {
     rules: [
      {
        test: /\.tsx?$/,
        use: 'ts-loader',
        exclude: /node_modules/
      }
    ]
   },
   output: {
     filename: 'bundle.js',
     path: path.resolve(__dirname, 'dist')
   }
 }

документацию можно найти здесь, проблема связана с установленной вами версией ts-loader

Ответ 6

Для меня это сработало, просто изменив "загрузчики" на "правила".