Не расспознается @ при использовании react

176
23 января 2019, 07:40

Подключил npm-пакет mobx-react и при запуске выкидывает такую ошибку

Syntax error: C:/..../index.jsx: Unexpected token (4:0)

Answer 1

. !!! автор вопроса не использует TS (.jsx)
-> предполагается использование Babel
-> о нём и речь в тексте ниже

судя по тому, что декараторы вы называете собачкой - я настоятельно рекомендую:

  1. для начала ознакомьтесь вот с этой статьёй на хабре https://habr.com/post/277021/, ещё можно заглянуть сюда https://learn.javascript.ru/decorators и сюда https://github.com/tc39/proposal-decorators#decorators.

  2. затем - затем, по хорошему, необходимо пощупать, поиграться с декораторами, но тут встаёт вопрос, какой плагин использовать https://babeljs.io/docs/en/babel-plugin-transform-decorators

    • babel-plugin-transform-decorators
    • babel-plugin-transform-decorators-legacy
    • UPD:
      а вот, на сайте npm вообще рекомендуют для Babel >= 7.x
      @babel/plugin-proposal-decorators

что говорит документация mobx

вкратце:

  1. установи babel-plugin-transform-decorators-legacy
  2. включи его в .babelrc вот так

    {
        "presets": ["es2015", "stage-1"],
        "plugins": ["transform-decorators-legacy"]
    }
    

https://mobx.js.org/best/decorators.html#enabling-decorator-syntax

Babel: manually enabling decorators

To enable support for decorators without using the mobx preset, follow the following steps. Install support for decorators: npm i --save-dev babel-plugin-transform-decorators-legacy. And enable it in your .babelrc file:

{
  "presets": ["es2015", "stage-1"],
  "plugins": ["transform-decorators-legacy"]
}

Note that the order of plugins is important: transform-decorators-legacy should be listed first. Having issues with the babel setup? Check this issue first.

For babel 7, see issue 1352 for an example setup.

я попробовал собрать проект вот с такими конфигами

package.json

"devDependencies": {
  "@babel/core": "^7.1.0",
  "babel-plugin-transform-decorators-legacy": "1.3.5",
}

.babelrc

{
  "plugins": [
    ["transform-decorators-legacy"]
    // или так
    //["transform-decorators-legacy", {"decoratorsBeforeExport": true}]
  ]
}

но получил ошибку

Error: The 'decorators' plugin requires a 'decoratorsBeforeExport' option, whose value must be a boolean. If you are migrating from Babylon/Babel 6 or want to use the old decorators proposal, you should use the 'decorators-legacy' plugin instead of 'decorators'.

и на этом мой интерес к вопросу угас.

если мой ответ вас не устраивает - рекомендую:

  1. найти статью с подробным описанием установки и настройки проекта, попробовать, если не получится указать её в вопросе.
  2. приложить к вопросу содержимое файлов package.json и .babelrc, а лучше ссылку на минимальный проект на github.
  3. ну и наконец - запастись чаем, пряниками и терпением : ) в ожидании адептов бабел/реакт/флов
READ ALSO
Дообогащения конфигурации в ExtJS

Дообогащения конфигурации в ExtJS

Столкнулся с проблемой дообогащения конфигурации в ExtJSХочу в потомке добавить/изменить значение конфигурации, но родителю все равно приходит...

212
Как прижать Элементы DIV-а к краю

Как прижать Элементы DIV-а к краю

Как прижать div и все его элементы к правому краю, и при скроле он шел за ним

166
Подсветка курсора по клику

Подсветка курсора по клику

Всем привет, у меня есть вот такая вот кнопка:

185