Ответы:
Я столкнулся с этой проблемой и установил контрольные точки для каждого экземпляра «Токены не предоставлены», который я мог найти, используя:
grep -lr 'No tokens were provided' vendor/
который вернулся:
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
Мое исключение было брошено в TokenArrayScanner.php
файл. Значение экземпляра "tokens" устанавливается в конструкторе, поэтому я поставил точку останова и перезапустил процесс. К сожалению, этот конструктор вызывается много раз во многих файлах, и данные для файла, который токенизируется, не включаются в вызов конструкции. Я смог определить, что «токены» - это просто строки проверяемого файла. Основываясь на сообщении CarComp, я использовал это, чтобы найти оскорбительный файл:
find . -type f -name '*.php' -empty
Получилось несколько файлов, которые жили по путям, содержащим «dev / tests», которые исключены из сканирования, и один файл от стороннего разработчика. удаление этого файла решило проблему, и команда компиляции завершилась только жалобами, а не исключениями.
Кажется, у вас есть пустой файл, который анализируется с помощью \ Magento \ Setup \ Module \ Di \ Code \ Reader \ ClassesScanner , который использует метод PHP token_get_all . Исключение выдается, если метод не возвращает никакого значения, как в пустом файле.
Пустые файлы также провоцируют проблему отсутствия токенов, поэтому необходимо проверить ClassesScanner, чтобы оценить, является ли используемая запись каталога или какой-либо файл класса допустимым файлом и не является ли его содержимое пустым. Вам необходимо добавить надлежащий контент в созданные файлы ИЛИ его не следует определять / создавать.