Eslint - 超出最大调用堆栈大小
Eslint - Maximum call stack size exceeded
在 React / Webpack 项目中工作时,我开始遇到 eslint 库的问题。
eslint 包是使用 npm 下载的,它用于使用 webpack preLoader 验证项目。
preLoaders: [{
test: /\.jsx?$/,
loaders: [ 'eslint' ],
include: path.resolve(__dirname, 'app')
}]
直到最近我尝试 git 将同一个项目克隆到另一个文件夹时,它才正常工作。
安装依赖项 "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,现在的解决办法很简单,就是把babel-eslint更新到4.1.6。例如,"babel-eslint":“^4.1.6”。现在有效:)
如果您的代码包含
export * from "."
删除上面的行
在 React / Webpack 项目中工作时,我开始遇到 eslint 库的问题。
eslint 包是使用 npm 下载的,它用于使用 webpack preLoader 验证项目。
preLoaders: [{
test: /\.jsx?$/,
loaders: [ 'eslint' ],
include: path.resolve(__dirname, 'app')
}]
直到最近我尝试 git 将同一个项目克隆到另一个文件夹时,它才正常工作。 安装依赖项 "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,现在的解决办法很简单,就是把babel-eslint更新到4.1.6。例如,"babel-eslint":“^4.1.6”。现在有效:)
如果您的代码包含
export * from "."
删除上面的行