2015-11-25 29 views
6

एक प्रतिक्रिया/वेबपैक प्रोजेक्ट में काम करना मुझे एस्लिंट लाइब्रेरी में समस्याएं शुरू हुईं।एस्लिंट - अधिकतम कॉल स्टैक आकार

एस्लिंट पैकेज एनपीएम का उपयोग करके डाउनलोड किया जाता है और इसका उपयोग वेबपैक प्रीलोडर का उपयोग करके प्रोजेक्ट को सत्यापित करने के लिए किया जाता है।

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

यह हाल ही में ठीक काम करता था जब मैंने एक ही प्रोजेक्ट को अन्य फ़ोल्डर में क्लोन करने की कोशिश की। निर्भरताओं को स्थापित करने के बाद "npm इंस्टॉल करें" और प्रोजेक्ट "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" किया था और दोनों में एक ही पैकेज और संस्करण हैं। क्यों काम कर रहा है और दूसरा नहीं?

मुझे लगता है कि समस्या एस्लिंट पैकेज में है क्योंकि जब मैं प्रीलोडर को हटा देता हूं तो यह फिर से काम करता है।

मैं वास्तव में इसके बारे में उलझन में हूं। किसी को पहले उस समस्या थी?

मेरे main.view.jsx की तरह है कि

import React from 'react'; 
export default class MainView extends React.Component { 
    render() { 
     return (
      <div /> 
     ); 
    } 
} 

धन्यवाद लग रहा है!

+0

_/main.view.jsx_ के बारे में क्या? क्या आप इसे भी दिखा सकते हैं? –

+0

@nAz मैंने अभी मुख्य प्रश्न.view.jsx के साथ प्रश्न अपडेट किया है। जैसा कि आप देखेंगे केवल एक खाली प्रतिक्रिया घटक है। मैंने जितना संभव हो पर्यावरण को अलग करने की कोशिश की। – ius

उत्तर

10

मैं खुद से समस्या का समाधान कर सकता हूं।

सब कुछ अलग करना मुझे पता चला कि समस्या बेबेल निर्भरता थी।

किसी कारण से मेरे पास बैबेल-कोर, बेबेल-लोडर और बेबेल-एस्लिंट के संस्करणों का संयोजन है जहां ठीक से काम नहीं कर रहा है। मैंने पैकेज.जेसन में अपनी परियोजना के लिए आवश्यक बेबेल संस्करणों को बदल दिया और अब सब कुछ ठीक काम करता है।

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

यह किसी और की मदद करता है! : डी – loopmode

+0

हम्म, मैं वास्तव में समझ में नहीं आता कि यह चुना गया उत्तर क्यों है। यह समाधान जल्द ही एक गैर-व्यवहार्य समाधान होगा। यह सब है :) –

+0

अभी भी उपलब्ध है। मेरे लिए काम किया –

1

धागे https://github.com/eslint/eslint/issues/4485 के माध्यम से देख रहे हैं, समाधान अब बैबेल-एस्लिंट को 4.1.6 पर अपडेट करने के लिए बहुत आसान है। उदाहरण के लिए, "बेबेल-एस्लिंट": "^ 4.1.6"। अब काम करता है :)

संबंधित मुद्दे