Ошибка компиляции js .jsx.coffee.erb файлов в Sprockets 4.0 (Rails) - PullRequest
0 голосов
/ 28 марта 2020

Я обновляю старый проект Rails и наткнулся на проблему после обновления Sprockets до версии 4.0.0 (было 3.7.2). Компиляция .js.jsx.coffee.erb файлов теперь не удалась. Результирующий вывод содержит синтаксис jsx в виде простого текста. то есть

Пример входного файла sample.js.jsx.coffee.erb:

@Sample = createReactClass
  render: ->
    email = "<%= Rails.configuration.email %>"
    `<div>{email}</div>`

Файл выглядит нормально, но в итоге получается:

  Sample = createReactClass({
    render: function() {
      var email;
      email = "test@example.com";
      return <div>{email}</div>;
    }
  });

Браузер справедливо жалуется на <div>... неверный синтаксис javascript.

Правильный вывод, который достигается в Sprockets 3.7.2:

  Sample = createReactClass({
    render: function () {
      var email;
      email = "test@example.com";
      return React.createElement("div", null, email);
    }
  });

Тот же файл правильно компилируется после удаления кода .erb из файла и расширение изменилось на .js.jsx.coffee. Возможно, препроцессор .erb работает иначе, чем в предыдущей версии, создавая вывод, который препроцессор coffee не может обработать?

Кажется, что часть jsx во входном файле, содержащемся в backticks <div>...</div> больше не корректно преобразуется в React.createElement(...). Любые предложения, как я могу решить это?

...