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.