Magento 2 - Cách xem lỗi triển khai nội dung tĩnh


7

Khi tôi chạy php bin/magento setup:static-content:deploytôi đã có một số lỗi trong chủ đề của tôi. Tôi đã tìm đến tận cùng của chúng nhưng đó là một nỗi đau, tôi phải tự đi qua tất cả các tệp LESS của mình để kiểm tra lỗi.

Thủ phạm là một bản nhập thiếu dấu gạch dưới.

Tôi đã kiểm tra var/log/debug.logvar/log/support_report.lognhững cái này dường như không ghi lại lỗi LESS. Quá trình biên dịch phía máy khách cũng không, điều này chỉ trả về 404 cho kiểu-l.css và kiểu-m.css vì việc triển khai phải thất bại trước khi nó đạt được các tệp này.

TL: DR

Bây giờ câu hỏi của tôi là, các lỗi triển khai nội dung tĩnh được ghi lại ở bất cứ đâu? Nó sẽ dễ dàng hơn nhiều nếu có một bản ghi dọc theo dòng x.less can not be imported.

Đây là Magento 2.0.4 với chủ đề tùy chỉnh sử dụng Luma làm cha mẹ.

Ví dụ về lỗi của tôi:

=== frontend -> ThemeName/default -> en_GB ===
...
Successful: 2248 files; errors: 1
---

Câu trả lời:


9

Tôi cho rằng có một số loại lỗi có thể được kích hoạt khi triển khai.

Trước tiên, bạn có thể thấy Ngoại lệ được xử lý trực tiếp trong thực thi trong Magento/Deploy/Console/Command/DeployStaticContentCommand.php:

    catch (\Exception $e) {
        $output->writeln('<error>' . $e->getMessage() . '</error>>');
        if ($output->getVerbosity() >= OutputInterface::VERBOSITY_VERBOSE) {
            $output->writeln($e->getTraceAsString());
        }
        return;
    }

Về các lỗi được tính là một hệ thống hoàn toàn khác, bạn cần xem xét Magento/Deploy/Model/Deployerlớp, đầu ra bạn nhận được được viết bằng deploy()phương thức:

$this->output->writeln("\nSuccessful: {$this->count} files; errors: {$this->errorCount}\n---\n");

Bây giờ nếu chúng ta kiểm tra khi errorCountbiến này được tăng lên, chúng ta sẽ tìm thấy sau đây trong deployFile()phương thức:

    catch (\Exception $exception) {
        $this->output->write('.');
        $this->verboseLog($exception->getTraceAsString());
        $this->errorCount++;
    }

Và như bạn có thể đã đoán, verboseLog()phương thức chỉ xuất ra khi lệnh được chạy ở chế độ dài dòng:

private function verboseLog($message)
{
    if ($this->output->isVerbose()) {
        $this->output->writeln($message);
    }
}

Vì vậy, tôi nghĩ bạn cần chạy lệnh của bạn như thế này để xem các lỗi:

php bin/magento setup:static-content:deploy -v

Nếu nó không hoạt động, hãy thử các động từ thêm:

php bin/magento setup:static-content:deploy -vv
php bin/magento setup:static-content:deploy -vvv

Cảm ơn bạn. Thật xấu hổ khi các thông báo lỗi không giúp tôi với tư cách là nhà phát triển giao diện người dùng, nó dường như là một lỗi LESS vì CSS và tiền xử lý được đề cập một vài lần. Tôi đã hy vọng cho một lỗi đề cập đến nơi xảy ra lỗi. Điều này không trả lời câu hỏi mặc dù vậy tôi sẽ đánh dấu là chính xác.
Ben Crook

@ Ben-Space48 vui lòng tạo một vấn đề trên github để yêu cầu tính năng như vậy;)
Raphael tại Digital Pianism

Vì vậy, có ai xác định chính xác có bao nhiêu -v được yêu cầu?
peedee

@peedee bạn có tới 3. C càng nhiều thì càng dài dòng;)
Raphael tại Digital Pianism

2
Vâng tôi đã chú ý. đây là những gì xảy ra: một -v là đủ để cung cấp cho bạn stacktrace của lỗi giữa tất cả các dấu chấm được in. nếu bạn sử dụng 2 hoặc 3 v thì nó sẽ không in các dấu chấm nữa mà thay vào đó là tên của mỗi tệp được xử lý, điều này gây khó khăn cho việc tìm stacktrace. do đó tôi chỉ đề xuất một v. độ dài của chính stacktrace không tăng thêm v.
peedee

3

Bạn thường có thể thấy các lỗi trong phạm vi ít hơn bằng cách xem tệp css được tạo trên môi trường phát triển của bạn. Điều này không hoàn toàn trả lời câu hỏi nhưng hy vọng sẽ hữu ích cho ai đó.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.