Eslint - превышен максимальный размер стека вызовов

Работая в проекте React / Webpack, у меня начались проблемы с библиотекой eslint.

Пакет eslint загружается с помощью npm и используется для проверки проекта с помощью preLoader веб-пакета.

        preLoaders: [{
            test: /\.jsx?$/,
            loaders: [ 'eslint' ],
            include: path.resolve(__dirname, 'app')
        }]

До недавнего времени он работал нормально, когда я пытался скопировать тот же проект в другую папку. После установки зависимостей "npm install" и запуска проекта "npm start" появилась следующая ошибка.

    ERROR in ./main.view.jsx
Module build failed: RangeError: Maximum call stack size exceeded
    at keys (native)
    at Referencer.Visitor.visitChildren (project/node_modules/eslint/node_modules/escope/node_modules/esrecurse/esrecurse.js:78:24)
    at Referencer.Visitor.visit (project/node_modules/eslint/node_modules/escope/node_modules/esrecurse/esrecurse.js:112:14)
    at Referencer.Visitor.visitChildren (project/node_modules/eslint/node_modules/escope/node_modules/esrecurse/esrecurse.js:93:26)
    at Referencer.Visitor.visit (project/node_modules/eslint/node_modules/escope/node_modules/esrecurse/esrecurse.js:112:14)
    at Referencer.Visitor.visitChildren (project/node_modules/eslint/node_modules/escope/node_modules/esrecurse/esrecurse.js:93:26)
    at Referencer.Visitor.visit (project/node_modules/eslint/node_modules/escope/node_modules/esrecurse/esrecurse.js:112:14)
    at Referencer.Visitor.visitChildren (project/node_modules/eslint/node_modules/escope/node_modules/esrecurse/esrecurse.js:88:38)
    at Referencer.Visitor.visit (project/node_modules/eslint/node_modules/escope/node_modules/esrecurse/esrecurse.js:112:14)
    at Referencer.Visitor.visitChildren (project/node_modules/eslint/node_modules/escope/node_modules/esrecurse/esrecurse.js:93:26)
 @ ./app.jsx 17:26-57

Странная часть всего - то, что старая установка проекта все еще работает.

Проблема должна быть где-то в папке node_modules, потому что когда я копирую модули из старой установки в новую, проект неожиданно работает. Я выполнил "npm list --depth=0" для обоих проектов, и у обоих были одинаковые пакеты и версии. Почему один работает, а другой нет?

Я предполагаю, что проблема в пакете eslint, потому что когда я удаляю preLoader, он снова работает.

Я действительно смущен этим. У кого-то была эта проблема раньше?

Мой main.view.jsx выглядит так

import React from 'react';
export default class MainView extends React.Component {
    render() {
        return (
            <div />
        );
    }
}

Спасибо!

4 ответа

Решение

Я мог бы решить проблему самостоятельно.

Изолировав все, я обнаружил, что проблема заключалась в зависимостях от Вавилона.

По какой-то причине у меня была комбинация версий babel-core, babel-loader и babel-eslint, где они не работали вместе. Я изменил версии babel, необходимые для моего проекта в package.json, и теперь все работает нормально.

-    "babel-core": "5.6.x",
-    "babel-loader": "5.3.x",
-    "babel-eslint": "3.1.x",
+    "babel-core": "5.8.x",
+    "babel-loader": "5.4.x",
+    "babel-eslint": "4.1.x",

Здесь мои зависимости eslint

"eslint": "1.10.x",
"eslint-loader": "1.1.x",
"eslint-plugin-react": "3.10.x"

Надеюсь, что потерянное время поможет кому-то еще!

Просматривая ветку https://github.com/eslint/eslint/issues/4485, решение теперь очень просто обновить babel-eslint до 4.1.6. Например, "babel-eslint": "^4.1.6". В настоящее время работает:)

По какой-то причине я смог исправить это, просто отключив одно правило:

Добавьте это в свои правила:

          'no-octal-escape': 0,

если ваш код содержит

      export * from "."

удалить строку выше

Другие вопросы по тегам