Как использовать React в Rails с кофе? - PullRequest
1 голос
/ 05 мая 2020

Я добавляю Reactjs в приложение Rails (5.2), но я хочу использовать coffeescript для его написания. Я добавил веб-пакет и установил поддержку реакции и кофе, и оба, похоже, работают, но когда я хочу использовать оба, я получаю:

Module parse failed: Unexpected token (10:9)
File was processed with these loaders:
 * ./node_modules/coffee-loader/index.js
You may need an additional loader to handle the result of these loaders.
|
| Foo = props(() => {
>   return <div>Hello {props.name}!</div>;
| });
|

Я также обновил coffeescript до версии 2.0, которая должна поддерживать jsx изначально . Что я мог упустить?

1 Ответ

1 голос
/ 08 мая 2020

Я наконец-то заставил это работать, проблема в том, что (как упоминалось в @ caffeinated.tech) конфигурация довольно сложна.

Необходимые шаги, чтобы заставить его работать где:

  • Добавьте coffeescript версии 2 к зависимостям (по умолчанию webpacker устанавливает версию 1).

  • Убедитесь, что загрузчик coffeescript добавлен к загрузчику (это добавлено по умолчанию ):

// config/webpack/environment.js

const coffee =  require('./loaders/coffee')

// instead of environment.loaders.prepend('coffee', coffee)
environment.loaders.append('coffee', coffee)
/// ...
// config/webpack/loaders/coffee.js
module.exports = {
  test: /\.coffee(\.erb)?$/,
  use: [{
    loader: 'coffee-loader',
    options: {
      transpile: {} // it seems that transpile options can be used here,
                    // but I couldn't find what to use
    }
  }]
}

Обновление

Вместо настройки кофе для транспиляции (как упоминалось ранее) в этой проблеме он рекомендует настроить загрузчик babel, чтобы он не игнорировал файлы кофе (он не обрабатывает файлы кофе в конфигурации по умолчанию )

// config/webpack/environment.js

// Make babel process coffee files
environment.loaders.get('babel').test = /\.(js|jsx|mjs|ts|tsx|coffee)?(\.erb)?$/

После этого все работает.

...