Magento 2 - setup: di: compilazione genera Nessun token fornito errore


11

In magento 2 quando corro setup:di:compileottengo il seguente errore:

[Zend \ Code \ Exception \ RuntimeException]
Non sono stati forniti token

Come risolvere questo problema?

Ho disabilitato tutti i moduli aggiuntivi, eseguito setup: upgrade, ma continuo a ricevere l'errore token.

Risposte:


23

Ho riscontrato questo problema e ho inserito punti di interruzione in ciascuna istanza di "Nessun token fornito" che ho trovato usando:

grep -lr 'No tokens were provided' vendor/

che ha restituito:

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

La mia eccezione è stata generata nel TokenArrayScanner.phpfile. Il valore dell'istanza "token" è impostato nel costruttore, quindi ho inserito un punto di interruzione e ho riavviato il processo. Sfortunatamente, questo costruttore viene chiamato più volte su numerosi file e i dati per il file da tokenizzare non sono inclusi nella chiamata del costrutto. Sono stato in grado di determinare che i "token" sono solo righe del file che viene ispezionato. Sulla base del post di CarComp, l'ho usato per trovare il file offensivo:

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

Ciò ha rivelato un numero di file che vivevano in percorsi che contenevano "dev / test", che sono esclusi dalla scansione, e un singolo file da uno sviluppatore di terze parti. la rimozione di questo file ha risolto il problema e il comando di compilazione è stato completato con solo lamentele e non eccezioni.


Grazie, davvero molto utile. Ho un file vuoto nel nostro modulo personalizzato dopo aver eliminato il file che sono in grado di compilare senza errori.
Manish,

10

Qui, se vuoi sapere come trovare quei file vuoti, esegui questo comando (supponendo che tu abbia linux e accedi alla shell) nella tua directory root magento, o in qualunque directory tu stia lavorando che potrebbe avere file vuoti .. .

find -type f -empty

5

Sembra che tu abbia un file vuoto che viene analizzato da \ Magento \ Setup \ Module \ Di \ Code \ Reader \ ClassesScanner , che usa il metodo PHP token_get_all . Viene generata l'eccezione, se il metodo non restituisce alcun valore, come nel caso di un file vuoto.


3

I file vuoti provocano anche il problema Nessun token fornito, quindi è necessario verificare su ClassesScanner per valutare se la voce di directory utilizzata o qualsiasi file di classe è un file valido e se il suo contenuto non è vuoto. Devi aggiungere il contenuto appropriato all'interno dei file creati O non dovrebbe essere definito / creato.


3

Puoi metterlo dentro se la condizione:

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

Quindi controlla system.log per vedere quale file ha prodotto questo errore.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.