У меня была такая же проблема при работе с изоморфным приложением React. Что бы я ни пытался, у меня либо была проблема, описанная здесь: Компиляция SCSS в изоморфном приложении React , либо ошибка ниже:
Ошибка: сбой анализа модуля: неожиданный токен (1: 0)
Вам может понадобиться соответствующий загрузчик для обработки этого типа файлов.
Мне удалось решить эту проблему, добавив пакет isomorphic-style-loader в настройки моего сервера в веб-пакете.
Вот конфиги клиента для веб-пакета:
var browserConfig = {
//usual stuff
module: {
rules: [{
//... ,
{
test: /\.scss$/,
use: [
{
loader: 'style-loader',
},
{
loader: 'css-loader',
options: {
modules: true, //turns on the CSS Module mode
importLoaders: 1,
localIdentName: '[name]__[local]___[hash:base64:5]', //generates CSS class names
sourceMap: true
}
},
{
loader: 'sass-loader'
}
]
}
]
}
};
И настройки сервера:
var serverConfig = {
//...
module: {
rules: [{
//... ,
{
test: /\.scss$/,
use: [
{
loader: 'isomorphic-style-loader',
},
{
loader: 'css-loader',
options: {
modules: true,
importLoaders: 1,
localIdentName: '[name]__[local]___[hash:base64:5]',
sourceMap: true
}
},
{
loader: 'sass-loader'
}
]
}
]
},
}
С этими конфигами я смог создать styles.scss с простыми стилями:
$blueColor: #2196F3;
.component {
background: $blueColor;
}
Импортировать его в файл JS:
import myStyles from './styles.scss';
И использовать его внутри компонента React в render ():
<div className={ myStyles.component }>
Это решение любезно предоставлено DigitalKwarts, более подробную информацию об этом решении можно найти здесь: https://blog.digitalkwarts.com/server-side-rendering-with-reactjs-react-router-v4-react-helmet-and-css-modules/
Дайте мне знать, сработало ли это для вас или вы смогли найти лучшее решение.