Zum Inhalt springen
Aback Tools Logo

css-loader-Schema-Validierungsfehler in Webpack beheben

Wie man Webpack css-loader Schema-Validierungsfehler entziffert und behebt: die Breaking Changes der v4, die Optionen-Migrationstabelle, das Lesen von Fehlerpfaden und die Validierung der webpack.config.js vor dem nächsten Build.

DH
Tutorials & How-Tos12 Min. Lesezeit2,650 Wörter

Der css-loader-Schema-Validierungsfehler ist einer der häufigsten Webpack-Build-Fehler - er tritt auf, bevor die Kompilierung überhaupt beginnt, und liefert einen Fehlerpfad, der kryptisch wirkt, bis man ihn zu lesen weiß. Dieser Leitfaden erklärt genau, was diese Fehler auslöst, wie man die Meldung entziffert, welche webpack.config.js-Änderungen welchen Fall beheben und wie man die Konfiguration validiert, damit der nächste Build beim ersten Versuch gelingt.

v4+css-loader Breaking ChangeOptionen in v4 umstrukturiert
100%Erkennung vor dem BuildFehler treten vor der Kompilierung auf
0Kompilierte Dateien bei FehlerDer Build stoppt sofort

Was ist ein Schema-Validierungsfehler?

Webpack validiert das Optionsobjekt jedes Loaders vor dem Start der Kompilierung gegen ein JSON-Schema. Dieses Schema definiert, welche Eigenschaften erlaubt sind, welche Typen sie akzeptieren und welche Werte gültig sind. Wenn Ihre Konfiguration eine Eigenschaft übergibt, die das Schema nicht kennt - oder den falschen Typ für eine bekannte Eigenschaft - wirft Webpack einen Schema-Validierungsfehler und verweigert den Build.

Warum die Validierung vor der Kompilierung stattfindet

Webpack validiert vorab, weil Loader-Optionen beeinflussen, wie Dateien verarbeitet werden. Eine ungültige Option könnte stillschweigend eine falsche Ausgabe erzeugen, wenn Webpack sie ignorieren würde; daher ist die strikte Validierung beim Start das sicherere Design. Der Nachteil ist ein harter Stopp, bevor Code angefasst wird - aber die Fehlermeldung sagt Ihnen immer genau, welche Option falsch ist und wo sie in Ihrem Konfigurationsbaum liegt.

Das Fehlerformat

Ein css-loader-Schema-Validierungsfehler folgt einer vorhersagbaren Struktur. Er enthält immer den Loader-Namen (css-loader), den Pfad zur betroffenen Option in Ihrem Konfigurationsobjekt (z. B. options.localIdentName), das konkrete Problem (`unbekannte Eigenschaft, sollte einer der erlaubten Werte sein oder sollte vom Typ [Typ] sein`) und oft einen Link zur Dokumentation des Loaders. Zuerst den Pfad zu lesen ist immer der schnellste Weg zur Lösung.

Note

Schema-Validierungsfehler werden von Webpacks integriertem schema-utils-Paket geworfen, nicht von css-loader selbst. Jeder Webpack-Loader, der schema-utils zur Validierung seiner Optionen nutzt, erzeugt Fehler im selben Format - die Fähigkeit, diese Meldungen zu lesen, gilt also für alle Loader, nicht nur für css-loader.

Warum css-loader sie auslöst

css-loader hat über seine Hauptversionen hinweg erhebliche Änderungen am Optionsschema durchlaufen. Entwickler, die css-loader aktualisieren - oder eine webpack.config.js aus einem Tutorial für eine andere Version kopieren - enden häufig mit Optionen, die in einer älteren Version gültig waren, inzwischen aber unbekannt oder umstrukturiert sind.

Alle CSS-Modules-Optionen wurden unter die Option modules verschoben, um Verschmutzung der Optionen auf oberster Ebene zu vermeiden und die Schema-Klarheit zu verbessern.

- css-loader changelog, v4.0.0

Der Breaking Change der v4

Die häufigste Quelle von css-loader-Schemafehlern ist die Migration v3 → v4. In css-loader v3 lagen die CSS-Modules-Optionen auf oberster Ebene des Optionsobjekts: localIdentName, camelCase, minimize und modules als Boolescher Wert. In v4 zogen alle CSS-Modules-Optionen in ein eigenes modules-Unterobjekt, und minimize wurde komplett entfernt (die CSS-Minifizierung gehört nun zu css-minimizer-webpack-plugin). Jedes Projekt, das noch die flache v3-Syntax mit einer v4+-Installation nutzt, löst sofort einen Schema-Validierungsfehler aus.

Weitere häufige Auslöser

  • Tippfehler in Optionsnamen - moduls statt modules, localIdentiyName statt localIdentName
  • Falscher Werttyp - ein String, wo ein Objekt erforderlich ist, oder eine Zahl, wo ein Boolean erwartet wird
  • Entfernte Optionen - minimize (in v4 entfernt), importLoaders als Boolean (muss eine Zahl sein), camelCase (in v6 entfernt)
  • Configs aus Tutorials der falschen Version kopiert - Stack-Overflow-Antworten zu css-loader v2 werden von Suchmaschinen noch immer häufig ausgeliefert
  • Konfliktierende Peer-Dependencies - ein Drittanbieter-Paket pinnt eine ältere css-loader-Version, die mit Ihrer Config inkompatibel ist

Tip

Bevor Sie die Fehlermeldung debuggen, führen Sie npm ls css-loader (oder yarn why css-loader) aus, um die tatsächlich installierte Version zu bestätigen. Die Version in Ihrer package.json und die auf der Festplatte können nach einer fehlgeschlagenen Installation oder einem Abhängigkeitskonflikt abweichen. Beheben Sie immer zuerst die Versionsabweichung.

Die Fehlermeldung lesen

Jeder css-loader-Schema-Validierungsfehler enthält die Informationen, die Sie zu seiner Behebung brauchen - sofern Sie die Pfadnotation zu lesen wissen. Die Meldung hat drei relevante Teile: den Loader-Namen, den Konfigurationspfad und die konkrete Problembeschreibung. Konzentrieren Sie sich in dieser Reihenfolge darauf.

Die Pfadnotation verstehen

Die Pfadnotation spiegelt die Struktur Ihrer webpack.config.js wider. Ein Pfad wie module.rules[0].use[1].options.localIdentName bedeutet: Schauen Sie auf den Schlüssel module, dann rules, dann das erste Array-Element (Index 0), dann use, dann den zweiten Loader in diesem use-Array (Index 1), dann options und schließlich die Eigenschaft localIdentName. Folgen Sie diesem Pfad in Ihrer Konfigurationsdatei, um die exakte Zeile zu finden, die den Fehler verursacht.

Die drei Fehler-Subtypen

Fehler-SubtypMeldung enthältBedeutungLösung
Unbekannte Eigenschaft"has an unknown property"Die Eigenschaft existiert in dieser Version nichtEigenschaft entfernen oder umbenennen
Falscher Typ"should be a [type]"Richtige Eigenschaft, falscher WerttypWert auf den korrekten Typ ändern
Ungültiger Wert"should be one of the allowed"Richtige Eigenschaft, Wert nicht im erlaubten SetEinen der aufgelisteten gültigen Werte verwenden
Zusätzliche Eigenschaft"additionalProperties is false"Das Objekt enthält Schlüssel außerhalb des SchemasNicht gelistete Schlüssel aus dem Objekt entfernen

Der Subtyp „sollte einer der erlaubten Werte sein“ listet die gültigen Optionen immer direkt im Fehler auf. Der Subtyp „unbekannte Eigenschaft“ schlägt keine Alternativen vor - Sie müssen die aktuelle css-loader-Dokumentation nach dem neuen Namen oder Äquivalent der Eigenschaft prüfen. Verwenden Sie den Webpack Config Validator, um alle Fehler auf einmal zu erhalten, statt sie durch wiederholte Builds einzeln zu entdecken.

Warning

Webpack meldet Schema-Validierungsfehler standardmäßig einzeln - den ersten Fehler zu beheben und neu zu bauen kann einen zweiten offenbaren. Hat Ihre Konfiguration ein Major-Upgrade durchlaufen, fügen Sie zuerst die gesamte Config in den [Webpack Config Validator](/tools/data/validators/webpack-config-validator) ein, um alle Fehler gleichzeitig zu sehen, bevor Sie irgendetwas ändern.

css-loader-Fehler beheben

Die Lösung ist immer eine gezielte Änderung am css-loader-Optionsobjekt in Ihrer webpack.config.js. Arbeiten Sie diese Schritte der Reihe nach ab, um den Fehler sauber zu beheben, ohne neue einzuschleppen.

1

Vollständige Fehlermeldung lesen und Pfad kopieren

Scrollen Sie am Stack Trace vorbei zum Abschnitt ValidationError und kopieren Sie die vollständige Meldung. Sie nennt den Loader (css-loader), den exakten Konfigurationspfad und das Problem. Der Pfad verrät, welcher rules-Eintrag und welche Position im use-Array das ungültige Optionsobjekt enthält.

2

Die Regel in webpack.config.js lokalisieren

Finden Sie den module.rules-Eintrag, der .css-Dateien lädt. Er sieht typischerweise aus wie ein test auf .css-Dateien mit style-loader und css-loader samt Optionsobjekt. Das Optionsobjekt innerhalb des css-loader-Eintrags ist der Ursprung aller Schemafehler. Öffnen Sie dieses Objekt und vergleichen Sie es mit der Liste der gültigen Optionen Ihrer installierten css-loader-Version.

3

Die passende Lösung für Ihren Fehler-Subtyp anwenden

Bei einem unbekannte-Eigenschaft-Fehler: Benennen Sie die Eigenschaft um oder verschieben Sie sie an ihren neuen Ort. localIdentName wird zu modules.localIdentName. minimize ist entfernt - installieren Sie css-minimizer-webpack-plugin separat. camelCase ist entfernt - verwenden Sie stattdessen die Option exportLocalsConvention im modules-Objekt. Bei einem falscher-Typ-Fehler: Konvertieren Sie modules: true in ein Objekt mit mode: 'local', falls Sie eine CSS-Modules-Konfiguration benötigen, oder belassen Sie es als Boolean, wenn nicht.

4

Die korrigierte Config vor dem Neuaufbau validieren

Fügen Sie die aktualisierte webpack.config.js in den Webpack Config Validator ein, um zu bestätigen, dass alle Schemafehler behoben sind, bevor Sie den vollständigen Build ausführen. So werden Sekundärfehler der Korrektur erkannt und ein weiterer Build-Zyklus gespart.

Webpack Config Validator

Fügen Sie Ihre webpack.config.js ein und validieren Sie sofort alle Loader-Optionen - erkennt css-loader-Schemafehler, ungültige Modulregeln und Ausgabekonfigurationsfehler vor Ihrem nächsten Build.

Open tool

Häufige css-loader-Konfigurationsfehler

Dies sind die spezifischen Optionsfehler, die in css-loader-Schema-Validierungsfehlern am häufigsten auftreten. Jeder Eintrag zeigt das defekte Konfigurationsmuster, die korrekte Ersetzung und die css-loader-Version, auf die sich die Änderung bezieht.

localIdentName auf oberster Ebene (v3 → v4)

In css-loader v3 war localIdentName eine Option auf oberster Ebene, die die Generierung der CSS-Modules-Klassennamen steuerte. Ab v4 wurde sie in das modules-Objekt verschoben. Die Lösung: Verschachteln Sie sie in modules mit der Eigenschaft localIdentName auf Ihrem Muster. Die Fehlermeldung lautet options has an unknown property 'localIdentName' - das ist der css-loader-Migrationsfehler Nummer eins.

Option minimize entfernt (v4+)

Die Option minimize wurde in css-loader v4 entfernt. Die CSS-Minifizierung wird nun separat von css-minimizer-webpack-plugin im Array optimization.minimizer übernommen. Entfernen Sie minimize vollständig aus Ihren css-loader-Optionen und fügen Sie css-minimizer-webpack-plugin zu Ihrem Build hinzu, wenn Minifizierung nötig ist. Der CSS Validator kann helfen zu prüfen, ob das ausgegebene CSS nach dem Wechsel des Minifizierungswerkzeugs korrekt ist.

Option camelCase entfernt (v6)

css-loader v6 entfernte die Option camelCase auf oberster Ebene. Der Ersatz ist modules.exportLocalsConvention, die camelCase, camelCaseOnly, dashes oder dashesOnly akzeptiert. Aktualisieren Sie Ihre Optionen, um exportLocalsConvention im modules-Objekt zu setzen. Ohne diese Änderung löst jede v6-Installation mit der alten camelCase-Eigenschaft einen Fehler „unbekannte Eigenschaft“ aus.

Alte Option (defekt)css-loader-VersionKorrekte Ersetzung
options.localIdentNamev4+options.modules.localIdentName
options.minimizev4+Plugin css-minimizer-webpack-plugin
options.camelCasev6+options.modules.exportLocalsConvention
options.modules: truev4+ (zur Anpassung)options.modules: { mode: "local", ... }
options.importLoaders: truealleoptions.importLoaders: 1 (Zahl, kein Boolean)
options.sourceMap: "inline"v4+options.sourceMap: true (nur Boolean)

Note

Die vollständige Liste gültiger Optionen Ihrer konkreten css-loader-Version ist jederzeit in der Schema-Datei options.json des Loaders auf GitHub verfügbar. Navigieren Sie zu webpack-contrib/css-loader, wählen Sie den Tag Ihrer Version und öffnen Sie src/options.json - das ist exakt das Schema, gegen das Webpack validiert.

Die Webpack-Konfiguration validieren

Der effizienteste Weg, css-loader-Schemafehler zu beheben - besonders nach einem Major-Upgrade -, ist die Validierung der gesamten webpack.config.js auf einmal, statt Fehler Build für Build zu entdecken. Mehrere Tools machen das schnell.

Der Webpack Config Validator

Der Webpack Config Validator nimmt Ihre vollständige webpack.config.js entgegen und meldet alle Schema-Verstöße über jeden Loader, jedes Plugin und jede Option auf oberster Ebene in einem einzigen Durchlauf. Er zeigt dieselbe Pfadnotation, die Webpack in Laufzeitfehlern verwendet, sodass Sie die Ausgabe mit dem im Terminal gesehenen Fehler abgleichen können. Config einfügen, alle Probleme auf einmal erhalten, beheben, erneut einfügen zur Bestätigung - kein Build-Zyklus nötig.

Zuerst die Konfigurationsdatei auf JavaScript-Syntaxfehler prüfen

Wenn Webpack Ihre webpack.config.js wegen eines JavaScript-Syntaxfehlers nicht einmal parsen kann - unpassende Klammern, ein fehlendes Komma oder ein ungültiger Spread - sehen Sie einen Node.js-Parse-Fehler statt eines Schema-Validierungsfehlers. Nutzen Sie den JavaScript Syntax Validator, um Syntaxprobleme auszuschließen, bevor Sie die Schema-Validierung debuggen.


Verwandte Konfigurationsdateien validieren

css-loader ist selten die einzige Konfigurationsdatei in einer Build-Pipeline. Verwenden Sie PostCSS für Transformationen, erkennt der PostCSS Config Validator Fehler in der Plugin-Reihenfolge und fehlende Abhängigkeiten in postcss.config.js. Nutzen Sie stylelint für CSS-Qualitätsprüfungen, validiert der Stylelint Config Validator Ihre .stylelintrc, bevor er den Build stört. Der ESLint Config Validator ist nützlich, wenn Ihre Build-Kette auch ESLint ausführt - Fehlkonfigurationen dort können als Build-Fehler auftreten, die Loader-Fehlern ähneln.

PostCSS Config Validator

Validieren Sie postcss.config.js auf Plugin-Reihenfolge und Optionsfehler - erkennt Konfigurationsprobleme, die häufig zusammen mit css-loader-Schemafehlern in komplexen Webpack-Setups auftreten.

Open tool

css-loader mit PostCSS und CSS Modules

Die meisten Webpack-Produktionssetups nutzen css-loader zusammen mit PostCSS und CSS Modules. Jedes fügt eigene Optionen und eigene potenzielle Schemafehler hinzu. Wer ihre Interaktion versteht, vermeidet die häufigsten Konfigurationskonflikte.

Die Option importLoaders

Läuft PostCSS vor css-loader über eine CSS-Datei, müssen Sie in den css-loader-Optionen importLoaders: 1 (oder höher) setzen, damit auch die @import-Anweisungen im CSS von PostCSS verarbeitet werden. Ohne diesen Wert umgehen importierte Dateien PostCSS. Ein häufiger Fehler ist importLoaders: true - das löst einen Schema-Validierungsfehler aus, da die Option eine Zahl, kein Boolean sein muss. Setzen Sie sie auf die Anzahl der Loader, die in der Kette vor css-loader laufen.

CSS Modules mit benutzerdefinierten Klassennamen

Die Anpassung von CSS-Modules-Klassennamen zog in css-loader v4 in das modules-Unterobjekt. Eine vollständige CSS-Modules-Konfiguration mit eigenem Identitätsmuster nutzt mode, localIdentName und exportLocalsConvention - jede als eigene Option mit eigenen Schema-Beschränkungen. Eine davon auf oberster Ebene von options statt in modules zu übergeben, erzeugt einen Fehler „unbekannte Eigenschaft“.

Optionen url und import

Die Optionen url und import von css-loader steuern, ob der Loader url()-Verweise und @import-Anweisungen auflöst. Beide akzeptieren entweder einen Boolean oder ein Objekt mit Filterfunktion. Eine bloße Funktion zu übergeben - statt eines Objekts mit filter-Eigenschaft - löst einen Schemafehler aus, da das Optionsschema ein Objekt mit filter-Eigenschaft erwartet, keine nackte Funktion. Wickeln Sie Filterfunktionen stets in die erwartete Objektform ein.

Warning

Wenn Sie von Webpack 4 auf Webpack 5 migrieren, sind die css-loader-Optionen nicht das Einzige, was sich geändert hat. Die früher für Assets zuständigen Loader file-loader und url-loader werden durch Webpack 5s eingebaute Asset Modules ersetzt. Diese Loader neben der Asset-Module-Konfiguration von Webpack 5 zu behalten, erzeugt widersprüchliche Regeln, die wie css-loader-Fehler aussehen können, tatsächlich aber Asset-Konflikte sind. Validieren Sie Ihre gesamte Config mit dem [Webpack Config Validator](/tools/data/validators/webpack-config-validator), um css-loader-Probleme von Asset-Module-Konflikten zu trennen.

Key takeaways

  • css-loader-Schema-Validierungsfehler treten vor der Kompilierung auf und nennen immer den exakten Pfad der ungültigen Option - lesen Sie zuerst den Pfad, nicht den Stack Trace.
  • Die häufigste Ursache ist die Verwendung der css-loader-v3-Optionssyntax (flaches localIdentName, minimize, camelCase) mit einer v4+- oder v6+-Installation.
  • In css-loader v4+ ziehen alle CSS-Modules-Optionen in ein modules-Unterobjekt - localIdentName wird zu modules.localIdentName.
  • minimize wurde in v4 entfernt - verwenden Sie stattdessen css-minimizer-webpack-plugin in optimization.minimizer.
  • importLoaders muss eine Zahl sein (z. B. 1), kein Boolean - true zu übergeben löst einen Typ-Validierungsfehler aus.
  • Verwenden Sie den Webpack Config Validator, um alle Schemafehler in einem Durchlauf zu erkennen, bevor Sie neu bauen.
  • Prüfen Sie auch verwandte Configs - Fehlkonfigurationen in PostCSS, ESLint und Stylelint begleiten css-loader-Fehler häufig in komplexen Pipelines.

Häufige Fragen

A css-loader schema validation error is thrown when an option you passed in the css-loader options object does not match the JSON schema that css-loader uses to validate its configuration. This happens when you use a property name that does not exist in the current version of css-loader, pass the wrong value type for a known option, or use a configuration pattern from an older css-loader version that has since changed. Webpack validates loader options against their declared schemas before building, so the error appears immediately without any compilation.

Remove or rename the property named in the error message. The most common cause is using a deprecated option from an older css-loader version - for example, `localIdentName` at the top level of options, which moved to `modules.localIdentName` in css-loader v4+. Check the css-loader changelog for the version you are running and update your option structure accordingly. The error message always names the exact unknown property, so the fix is targeted.

css-loader introduced breaking option schema changes in several major versions. The most significant was v4, which moved all CSS Modules options under a dedicated `modules` object and dropped top-level options like `localIdentName`, `minimize`, and `camelCase`. If you upgraded from v3 to v4 or later, any of these flat options will now trigger a schema validation error. Migrate each option to the new nested structure and validate the result with the Webpack Config Validator tool.

This error means you passed a value of the correct type but outside the allowed set. For example, the `modules` option accepts a boolean, a string (`"local"`, `"global"`, `"pure"`), or a configuration object - passing any other string triggers this error. The error message lists the allowed values. Find the option, check what the current css-loader version accepts for that option, and update your config to use one of the listed valid values.

Yes. In Webpack 5 with css-loader v6+, enable CSS Modules by setting the `modules` option to an object: `{ mode: "local", localIdentName: "[name]__[local]--[hash:base64:5]" }`. The boolean shorthand `modules: true` still works for basic use, but any CSS Modules customisation requires the object form. A common source of schema errors is mixing the flat-option syntax from css-loader v3 with a v6 installation.

Yes. The Webpack Config Validator checks your entire webpack.config.js including the options objects passed to each loader in your module.rules array. It detects unknown properties, incorrect value types, and invalid option combinations for css-loader and other loaders. Paste your config and the validator reports issues with the same path notation (e.g. "module.rules[0].use[1].options.localIdentName") that Webpack itself uses in schema validation errors.

css-loader processes CSS files into JavaScript modules - it handles CSS parsing, CSS Modules, and url() resolution. style-loader injects the resulting CSS into the DOM at runtime. Schema validation errors naming css-loader in the message are caused by options in the css-loader options object. style-loader has its own smaller options schema and its errors are separate. Both loaders are validated independently by Webpack before the build starts.

Use mini-css-extract-plugin for production builds - it extracts CSS into separate files for better caching and performance. Use style-loader for development only - it injects styles at runtime which enables hot module replacement but is not suitable for production. A common Webpack pattern switches between the two based on the NODE_ENV value. Neither choice affects css-loader options or schema validation errors, which are independent of which output plugin you use.

ShareXLinkedIn