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"
希望我失去的时间会帮助别人!
通过https://github.com/eslint/eslint/issues/4485这个线程,现在解决scheme非常简单,就是将babel-eslint更新到4.1.6。 比如“babel-eslint”:“^ 4.1.6”。 现在工作:)