Получение «Ошибка: Плагин / Предустановленные файлы не могут экспортировать объекты, только функции».из babel-preset-реагировать-app / index.js - PullRequest
0 голосов
/ 27 сентября 2018

Итак, у меня есть проект, который был загружен с create-react-app, и при попытке построить с react-scripts build я получаю следующее сообщение об ошибке:

Module build failed: Error: Plugin/Preset files are not allowed to export objects, only functions.

В соответствии свыводится ошибка от node_modules/babel-preset-react-app/index.js, которая выглядит следующим образом:

'use strict';

const create = require('./create');
var env = process.env.BABEL_ENV || process.env.NODE_ENV;

module.exports = create(env);

Я использую Babel 7, и ниже приведен список соответствующих пакетов зависимостей от package.json:

"dependencies": {
    ...
    "react": "^16.5.2",
    "react-dom": "^16.4.0",
    "react-loadable": "^5.4.0",
    "react-router-dom": "^4.3.1",
    "react-scripts": "1.1.5"
},
"devDependencies": {
    "@babel/cli": "^7.1.0",
    "@babel/core": "^7.1.0",
    "@babel/preset-env": "^7.1.0",
    "@babel/preset-flow": "^7.0.0",
    "@babel/preset-react": "^7.0.0",
    "babel-core": "^7.0.0-bridge.0",
    "babel-eslint": "^9.0.0"
    ...
}

Мой babel.config.js следующий:

module.exports({
 presets: ['@babel/preset-env', '@babel/preset-react', '@babel/preset-flow']
})

Я сделал столько копаний в интернете, сколько мог, чтобы попытаться решить эту проблему.Закончилось поиском множества подобных постов, но ни одно из предложенных решений не сработало для меня.Я видел одну или две, которые упоминали, включая предустановки @babel/preset-env и @babel/preset-react в babel.config.js, которые у меня уже есть.Надеясь, что у сообщества есть кое-что, чтобы поделиться.

Ответы [ 2 ]

0 голосов
/ 27 сентября 2018

Я опубликовал тему проблемы на GitHub, посвященную этой проблеме, и смог решить ее, работая с двумя участниками Create React App.Были замечены некоторые тонкие моменты в отношении того, как работает Babel при использовании приложения Create React.Я определенно рекомендую прочитать беседу тем из вас, кто страдает от той же проблемы, что и я.

https://github.com/facebook/create-react-app/issues/5135

Есть одна вещь, которую я хочу подчеркнуть тем, кто использует Create ReactПриложение: Удалите все связанные с babel devDependencies и переустановите ваши node_modules .Create React App НЕ заботится или ищет файлы .babelrc или babel.config.js в вашем модуле.Они бесполезны (по крайней мере, в настоящее время, потому что только время покажет, может ли это поведение измениться).Если это не сработает, то дополнительно удалите файл package-lock.json вместе с вашим node_modules и попробуйте снова.

Единственный babel devDepdendency, который я сохранил в своем пакете (который, скорее всего, не помогк моей проблеме) babel-eslint, так как я использую ESLint в своем проекте.

0 голосов
/ 27 сентября 2018

Начиная с Babel7, они ожидают, что config будет возвращен из функции.Лучше для кеширования.

Теперь, чтобы решить вашу проблему, попробуйте это

function loadConfig() {
  return {
    presets: ['@babel/preset-env', '@babel/preset-react', '@babel/preset-flow']
  }
}
module.exports = loadConfig;
...