Meine Projektstruktur:
webpack.config.js
app--
--> src
---->> components
------>>> myComponent.js
------>>> myComponent.scss
--> styles
---->> variables.scss
In webpack.config module.exports:
...
resolve: {
alias: {
styles: path.join(__dirname, 'app/styles')
}
}
In meiner Datei - myComponent.scss:
@import "styles/variables";
Ich erhalte diesen Fehler beim Erstellen von bundle.js:
Module build failed:
@import "styles/variables";
^
File to import not found or unreadable: styles/variables
Wie kann ich Aliase in sass-Dateien @importieren?
In einem Stylesheet konnte ich einen Alias verwenden, den ich im Webpack folgendermaßen definiert habe:
@import '~alias/variables';
nur durch das Präfixieren des Alias mit ~
hat den Trick für mich gemacht, wie in der Dokumentation in hier vorgeschlagen
Ein weiteres Update zu diesem Thema, entfernen .scss
@import '~scss/common.scss';
sollte sein
@import '~scss/common';
Seit deinem webpack.config.js
Datei ist bereits in der /app
Ordner, sollte der Alias nicht sein:
resolve: {
alias: {
styles: path.join(__dirname, 'styles')
}
}
?
In meinem Fall ist die Abhängigkeit ein Knotenmodul, daher kann ich es folgendermaßen importieren:
@import '~node-module-name/variables';
Und wenn ich den tatsächlichen Node-Modul-Dir-Namen verwende, zeigt mein Editor (PhpStorm) keinen ungelösten Pfadfehler mehr an (das Problem, das @tkiethanom erwähnte). Es sieht so aus, als müsste ich in der Webpack-Konfiguration einen Alias angeben, wenn ich Importe im Sass-Stil verwenden möchte (z. B. my-package/colors
Anstatt von my-package/_colors.scss
), und es scheint, dass es egal ist, wie der Name dieses Alias lautet, solange ich den Verzeichnisnamen des Knotenmoduls verwende