Magento 2 - configuración: di: lanzamiento de compilación No se proporcionaron tokens error


11

En magento 2 cuando ejecuto setup:di:compileme sale el siguiente error:

[Zend \ Code \ Exception \ RuntimeException]
No se proporcionaron tokens

¿Cómo resolver este problema?

Inhabilité todos los módulos adicionales, ejecuté setup: upgrade, pero aún recibo el error de tokens.

Respuestas:


23

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.phparchivo. 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.


Gracias, realmente muy útil. Tengo un archivo en blanco en nuestro módulo personalizado después de eliminar el archivo que puedo compilar sin errores.
Manish

10

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. .

find -type f -empty

5

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.


3

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.


3

Puede poner esto dentro si condición:

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

Luego verifique system.log para ver qué archivo produjo este error.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.