Magento 2 - सेटअप: di: संकलित फेंकता कोई टोकन त्रुटि प्रदान की गई थी


11

Magento 2 में जब मैं दौड़ता setup:di:compileहूं तो मुझे निम्नलिखित त्रुटि मिलती है:

[Zend \ Code \ Exception \ RuntimeException]
कोई टोकन प्रदान नहीं किए गए थे

इस समस्या को हल कैसे करें?

मैंने सभी अतिरिक्त मॉड्यूलों को अक्षम कर दिया, सेटअप चलाया: अपग्रेड, लेकिन फिर भी मुझे टोकन त्रुटि मिलती है।

जवाबों:


23

मैंने इस समस्या का अनुभव किया और 'नहीं टोकन प्रदान किए गए' के ​​प्रत्येक उदाहरण पर ब्रेकपॉइंट लगाए, जिसका मैं उपयोग कर पाया:

grep -lr 'No tokens were provided' vendor/

जो लौटा:

vendor/zendframework/zend-code/src/Scanner/ConstantScanner.php
vendor/zendframework/zend-code/src/Scanner/TokenArrayScanner.php
vendor/zendframework/zend-code/src/Scanner/MethodScanner.php
vendor/zendframework/zend-code/src/Scanner/PropertyScanner.php
vendor/zendframework/zend-code/src/Scanner/ClassScanner.php

मेरा अपवाद TokenArrayScanner.phpफ़ाइल में फेंका जा रहा था । "टोकन" उदाहरण का मूल्य कंस्ट्रक्टर में सेट किया गया है, इसलिए मैंने वहां एक विराम बिंदु रखा और प्रक्रिया को फिर से लॉन्च किया। दुर्भाग्य से, इस निर्माता को कई फ़ाइलों पर कई बार कहा जाता है, और फ़ाइल के टोकन के लिए डेटा निर्माण कॉल में शामिल नहीं है। मैं यह निर्धारित करने में सक्षम था कि "टोकन" फ़ाइल की केवल लाइनें हैं जिनका निरीक्षण किया जा रहा है। CarComp द्वारा पोस्ट के आधार पर, मैंने इसका इस्तेमाल अपमानजनक फ़ाइल खोजने के लिए किया:

find . -type f -name '*.php' -empty

इसने कई फ़ाइलों को बदल दिया, जो "देव / परीक्षण" वाले रास्तों के नीचे रहते थे, जिन्हें स्कैनिंग से बाहर रखा गया है, और एक तीसरे पक्ष के डेवलपर की एक फ़ाइल। इस फ़ाइल को निकालने से समस्या हल हो गई और संकलन आदेश केवल शिकायतों और अपवादों के साथ पूरा हुआ।


धन्यवाद, वास्तव में बहुत मददगार। मेरे पास हमारे कस्टम मॉड्यूल में एक खाली फाइल है, जिस फाइल को मैं बिना किसी त्रुटि के संकलित करने में सक्षम हूं।
मनीष

10

यहाँ, यदि आप उन खाली फ़ाइलों को खोजने के लिए HOW जानना चाहते हैं, तो बस इस कमांड को चलाएं (मान लें कि आपके पास linux है, और शेल तक पहुंच है) अपनी Magento रूट डायरेक्टरी में, या आप जिस भी डायरेक्टरी में काम कर रहे हैं, उसमें खाली फाइलें हो सकती हैं। ।

find -type f -empty

5

लगता है कि आपके पास एक खाली फ़ाइल है, जिसे \ Magento \ Setup \ Module \ Di \ Code \ Reader \ ClassesScanner द्वारा पार्स किया गया है , जो PHP token_get_all विधि का उपयोग करता है । अपवाद को फेंक दिया जाता है, यदि विधि कोई मान नहीं लौटाती है, जो कि खाली फ़ाइल पर मामला है।


3

खाली फाइलें यह भी बताती हैं कि नो टोकन प्रदान नहीं किए गए थे, इसलिए मूल्यांकन करने के लिए ClassesScanner पर एक चेक होना चाहिए कि क्या डायरेक्टरी प्रविष्टि या कोई क्लास फाइल एक मान्य फाइल है और यदि उसकी सामग्री खाली नहीं है। आपको बनाई गई फ़ाइलों के भीतर उचित सामग्री जोड़ने की आवश्यकता है या इसे परिभाषित / निर्मित नहीं किया जाना चाहिए।


3

आप इसे अंदर रख सकते हैं अगर हालत:

    if (!$this->tokens) {
        \Zend_Debug::dump(get_object_vars($this); exit;
        throw new \Zend\Code\Exception\RuntimeException('No tokens were provided');
    }

फिर system.log देखें कि किस फ़ाइल ने यह त्रुटि उत्पन्न की है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.