У меня есть приложение React с компонентами, написанными на ES6, - с помощью Babel и Webpack.Импорт файлов CSS в изоморфных компонентах React
В некоторых местах я хотел бы включать конкретные CSS файлы с определенными компонентами, как это было предложено в react webpack cookbook
Однако, если в какой-либо компонента файла, который я требуется статический CSS актив, например:
import '../assets/css/style.css';
Тогда компиляция завершается с ошибкой:
SyntaxError: <PROJECT>/assets/css/style.css: Unexpected character '#' (3:0)
at Parser.pp.raise (<PROJECT>\node_modules\babel-core\lib\acorn\src\location.js:73:13)
at Parser.pp.getTokenFromCode (<PROJECT>\node_modules\babel-core\lib\acorn\src\tokenize.js:423:8)
at Parser.pp.readToken (<PROJECT>\node_modules\babel-core\lib\acorn\src\tokenize.js:106:15)
at Parser.<anonymous> (<PROJECT>\node_modules\babel-core\node_modules\acorn-jsx\inject.js:650:22)
at Parser.readToken (<PROJECT>\node_modules\babel-core\lib\acorn\plugins\flow.js:694:22)
at Parser.pp.nextToken (<PROJECT>\node_modules\babel-core\lib\acorn\src\tokenize.js:98:71)
at Object.parse (<PROJECT>\node_modules\babel-core\lib\acorn\src\index.js:105:5)
at exports.default (<PROJECT>\node_modules\babel-core\lib\babel\helpers\parse.js:47:19)
at File.parse (<PROJECT>\node_modules\babel-core\lib\babel\transformation\file\index.js:529:46)
at File.addCode (<PROJECT>\node_modules\babel-core\lib\babel\transformation\file\index.js:611:24)
Это кажется, что если я попытаюсь REQ uire файл CSS в файле Component, тогда загрузчик Babel будет интерпретировать это как другой источник и попытаться перевести CSS в Javascript.
Ожидается ли это? Есть ли способ достичь этого - позволяя переделанным файлам явно ссылаться на статические активы, которые нельзя перекрыть?
Я уточнял погрузчиков и .js/JSX и CSS активов следующим образом:
module: {
loaders: [
{ test: /\.css$/, loader: "style-loader!css-loader" },
{ test: /\.(js|jsx)$/, exclude: /node_modules/, loader: 'babel'}
]
}
просмотреть full webpack config file
ПОЛНОЕ ОПИСАНИЕ НИЖЕ:
webpack.common.js - База WebPack конфигурации Я использую, поэтому я могу делиться свойствами между dev и production.
Gruntfile.js - Gruntfile используется для разработки. Как вы видите, для этого требуется конфигурация webpack выше и добавляет к ней некоторые свойства разработки. Может ли это вызвать проблему?
Html.jsx - Мой компонент HTML jsx, который пытается импортировать/требовать CSS. Это изоморфное приложение (с использованием Fluxbile), поэтому необходимо иметь фактический HTML как обработанный компонент. Используя инструкцию require, увиденную в этом файле, в любой части моего приложения выдает описанную ошибку.
Кажется, что-то связано с ворчанием. Если я просто компилирую с webpack --config webpack.common.js
, то я не получаю ошибок.
Короткий ответ: Это ошибка времени выполнения узла. Попытка загрузить CSS на сервере в изоморфных приложениях не является хорошей идеей.
Ваша конфигурация в порядке. Я попытался запустить его в приложении с включением css, и это сработало. Проверяйте другие вещи - возможно, вы запускаете webpack с совершенно другим конфигурационным файлом :) или что-то не так с пакетами. Опубликуйте больше информации - ваш package.json, как вы запускаете webpack и т. Д. Возможно, мы выясним. – Viacheslav
Спасибо, я предоставил больше информации выше. Кажется, что проблема вызвана где-то ворчанием, поскольку компиляция непосредственно через webpack в порядке. – duncanhall
Может показаться интересным для 'console.log()' your 'webpackConfig' в файле grunt –