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

标签 javascript node.js reactjs webpack eslint

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

eslint 包是使用 npm 下载的,它用于使用 webpack preLoader 验证项目。

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

直到最近我尝试将同一个项目 git clone 到另一个文件夹时,它才正常工作。 安装依赖项“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"

希望我失去的时间能帮助到其他人!

关于javascript - Eslint - 超出最大调用堆栈大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33916827/

相关文章:

node.js - Node Js : implementing a one-time "channel" using promises

javascript - 在数组中递增单击 Redux 函数

javascript - 这个 jQuery 插件是如何加载数据的?无法从 Firebug 中辨别出来

javascript - VueJS/JS DOM Watch/Observer 多阶段渲染场景

node.js - Etherpad:连接身份验证的最佳方式

javascript - 如何避免在 postgres 数据库中插入空值

css - Fabric React 和 CSS 转换 translateX

reactjs - react 选择不在移动设备上显示键盘并阻止缩放

javascript - 有没有办法恢复 Vanilla JavaScript 中的 preventDefault 方法?

javascript - Ember.js - 如何强制加载相关对象?