Eslint – 超出最大调用堆栈大小

在React / Webpack项目中工作时,我开始对eslint库有问题。

eslint软件包使用npm下载,并用于使用webpack预加载器来validation项目。

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 /> ); } } 

谢谢!

我可以自己解决这个问题。

隔离一切,我发现问题是babel依赖。

由于某种原因,我有babel-core,babel-loader和babel-eslint的版本的组合不能正常工作。 我改变了我的项目在package.json所需的babel版本,现在一切正常。

 - "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" 

希望我失去的时间会帮助别人!