configuration.module ma nieznaną właściwość „loaders”

136

mój wynik błędu:

Nieprawidłowy obiekt konfiguracyjny. Pakiet Webpack został zainicjowany przy użyciu obiektu konfiguracyjnego, który nie pasuje do schematu interfejsu API. - configuration.module ma nieznaną właściwość „loaders”. Te właściwości są ważne: object {exprContextCritical ?, exprContextRecursive ?, exprContextRegExp ?, exprContextRequest ?, noParse ?, rules ?, defaultRules ?, unknownContextCritical ?, unknown ?, strictExportPresence ?, strictThisContextOnImports? } -> Opcje dotyczące zwykłych modułów ( NormalModuleFactory).

mój webpack.config.js:

var webpack = require('webpack');
var path = require('path');

var BUILD_DIR = path.resolve(__dirname, 'src/client/public');
var APP_DIR = path.resolve(__dirname, 'src/client/app');

var config = {
  entry: APP_DIR + '/index.jsx',
  module : {
    loaders : [
      {
        test : /\.jsx?/,
        include : APP_DIR,
        loader : 'babel-loader'
      }
    ]
  },
  output: {
    path: BUILD_DIR,
    filename: 'bundle.js'
  }

};


module.exports = config;

moja wersja webpacka:

webpack@4.1.1
S.M_Emamian
źródło

Odpowiedzi:

317

W pakiecie internetowym 4 należy zmienić loadersna rules:

zmiana:

loaders 

do:

rules

źródło: Loaders

Przykład:

module.exports = {
  module: {
    rules: [
      { test: /\.css$/, use: 'css-loader' },
      { test: /\.ts$/, use: 'ts-loader' }
    ]
  }
};
S.M_Emamian
źródło
1
Czy to literówka? Powinien być rulesw pakiecie internetowym 4.
Sin
powinieneś używać reguł w webpacku 4.
S.M_Emamian
2
zmień programy ładujące na reguły w webpacku 4 ... na wypadek, gdyby trzeba było to powtórzyć: /
Helmut Granda
1
W swojej odpowiedzi powinieneś wyjaśnić, że powodem zmiany jest webpack 4.
kojow7
2

Powyższe odpowiedzi działają, ale możemy rozwiązać ten problem, zmieniając wersję pakietu webpack i webpack-dev-server na

"webpack": "3.8.1",
"webpack-dev-server": "2.9.4"

Może również rozwiązać problem. Mam nadzieję, że to pomoże.

Anshul
źródło
Podekscytowałem cię. Jedynym problemem jest to, że ludzie chcą aktualizować wersje frameworków i narzędzi, aby uzyskać nowe funkcje, a nie wracać do starszych wersji, aby upewnić się, że nie muszą zmieniać swoich plików konfiguracyjnych. Być może ból związany ze zmianą pliku konfiguracyjnego w celu dostosowania go do nowego sposobu działania narzędzia nie jest zły. Chyba że jest to niemożliwe.
Eniola
Dzięki @Eniola, tak, masz rację. Jak wspomniałem, odpowiedź S.M_Emamiana jest poprawna, ale moja odpowiedź będzie działać, jeśli ktoś zgodzi się pracować ze starszą wersją webpacka.
Anshul
0

Pracuję dla mnie poniżej webpack.config.js

module.exports = {
    entry: [
        '.src/index.js'
    ],
    output:{
        path: __dirname,
        filename: 'app/js/main.js'
    },
    module:{
        rules: [
          { test: /\.css$/, use: 'css-loader' },
          { test: /\.ts$/, use: 'ts-loader' }
        ]
    }
}
Pankaj Upadhyay
źródło