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

时间:2015-11-25 12:42:30

标签: javascript node.js reactjs webpack eslint

在React / Webpack项目中工作时,我开始遇到eslint库的问题。

使用npm下载eslint包,它用于使用webpack 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 />
        );
    }
}

谢谢!

2 个答案:

答案 0 :(得分:10)

我可以自己解决问题。

隔离所有我发现问题是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"

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

答案 1 :(得分:1)

通过线程https://github.com/eslint/eslint/issues/4485,解决方案现在非常简单地将babel-eslint更新为4.1.6。例如,&#34; babel-eslint&#34;:&#34; ^ 4.1.6&#34;。现在有效:)