Magento 2 - Kurulum: di: compile atar Jeton verilmedi hatası


11

Magento 2 çalıştırdığımda setup:di:compileaşağıdaki hatayı alıyorum:

[Zend \ Code \ Exception \ RuntimeException]
Hiçbir belirteç sağlanmadı

Bu problem nasıl çözülür?

Tüm ek modülleri devre dışı bıraktım, kurulumu çalıştırdım: yükseltme, ancak yine de belirteç hatası alıyorum.

Yanıtlar:


23

Bu sorunu yaşadım ve her bir 'Jeton sağlanmadı' için kesme noktaları koydum:

grep -lr 'No tokens were provided' vendor/

döndüren:

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

Benim istisnam TokenArrayScanner.phpdosyaya atıldı . "Belirteçler" örnek değeri yapıcıda ayarlanır, bu yüzden orada bir kırılma noktası koymak ve işlemi yeniden başlattı. Ne yazık ki, bu kurucu çok sayıda dosyada birçok kez çağrılır ve tokenleştirilen dosyaya ilişkin veriler yapı çağrısına dahil edilmez. "Belirteçlerin" incelenmekte olan dosyanın satırları olduğunu belirleyebildim. CarComp'un gönderisine dayanarak, rahatsız edici dosyayı bulmak için bunu kullandım:

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

Bu, "dev / test" içeren yollar altında yaşayan, tarama dışında bırakılan ve üçüncü taraf geliştiriciden tek bir dosya çıktı. Bu dosyanın kaldırılması sorunu çözdü ve derleme komutu istisnalar dışında yalnızca şikayetlerle tamamlandı.


Teşekkürler, gerçekten çok yardımcı. Dosyayı sildikten sonra hata olmadan derleyebildiğim özel modülümüzde boş bir dosya var.
Manish

10

Burada, bu boş dosyaları NASIL bulacağınızı bilmek istiyorsanız, magento kök dizininizde veya çalıştığınız herhangi bir dizinde boş dosyaları olabilen bu komutu çalıştırın (linux ve kabuğa erişim varsa). .

find -type f -empty

5

PHP token_get_all yöntemini kullanan \ Magento \ Setup \ Module \ Di \ Code \ Reader \ ClassesScanner tarafından ayrıştırılan boş bir dosyanız var gibi görünüyor . Yöntem, boş bir dosyada olduğu gibi herhangi bir değer döndürmezse istisna atılır.


3

Boş dosyalar ayrıca Belirtecin verilmediği sorununu da kışkırtır, bu nedenle kullanılan dizin girişinin veya herhangi bir sınıf dosyasının geçerli bir dosya olup olmadığını ve içeriği boş olup olmadığını değerlendirmek için ClassesScanner üzerinde bir kontrol olmalıdır. Oluşturulan dosyalara uygun içerik eklemeniz gerekir VEYA tanımlanmamalı / oluşturulmamalıdır.


3

Eğer koşul varsa bunu içine koyabilirsiniz:

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

Sonra hangi dosyanın bu hatayı verdiğini görmek için system.log dosyasını kontrol edin.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.