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,