Experimenté este problema y puse puntos de interrupción en cada instancia de 'No se proporcionaron tokens' que pude encontrar usando:
grep -lr 'No tokens were provided' vendor/
que regresó:
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
Mi excepción fue arrojada en el TokenArrayScanner.php
archivo. El valor de la instancia "tokens" se establece en el constructor, por lo que puse un punto de interrupción allí y relancé el proceso. Desafortunadamente, este constructor se llama muchas veces en numerosos archivos, y los datos para el archivo que se tokeniza no se incluyen en la llamada de construcción. Pude determinar que los "tokens" son solo líneas del archivo que se está inspeccionando. Según la publicación de CarComp, utilicé esto para encontrar el archivo ofensivo:
find . -type f -name '*.php' -empty
Esto produjo una cantidad de archivos que vivían bajo rutas que contenían "dev / tests", que están excluidos del escaneo, y un solo archivo de un desarrollador externo. eliminar este archivo resolvió el problema y el comando de compilación se completó con solo quejas y no excepciones.
Aquí, si desea saber CÓMO encontrar esos archivos vacíos, simplemente ejecute este comando (suponiendo que tenga Linux y acceso al shell) en su directorio raíz de magento, o en cualquier directorio en el que esté trabajando que pueda tener archivos vacíos. .
fuente
Parece que tiene un archivo vacío que es analizado por \ Magento \ Setup \ Module \ Di \ Code \ Reader \ ClassesScanner , que utiliza el método PHP token_get_all . Se lanza la excepción, si el método no devuelve ningún valor, que es el caso en un archivo vacío.
fuente
Los archivos vacíos también provocan el problema No se proporcionaron tokens, por lo que debería verificarse ClassesScanner para evaluar si la entrada de directorio utilizada o cualquier archivo de clase es un archivo válido y si su contenido no está vacío. Debe agregar contenido adecuado dentro de los archivos creados O NO debe definirse / crearse.
fuente
Puede poner esto dentro si condición:
Luego verifique system.log para ver qué archivo produjo este error.
fuente