簡體   English   中英

Laravel 9 + Jetstream 中的自定義視圖不會在沒有先測試的情況下加載

[英]Custom views in Laravel 9 + Jetstream won't load without testing first

我最近使用最新的 Laravel 9 和帶有 Livewire 的 Jetstream 創建了一個新項目。 我創建了一些遷移和播種器,它們與 Artisan 完美運行。

現在我准備開始創建我的主頁。 我在resources/views目錄中創建了一個名為index.blade.php的全新文件。 我給它的內容是“Hello World”。 而已。 沒有樣板,沒有 HTML,什么都沒有。 我將主“/”路由更新為指向“index”而不是“welcome”。 然后我創建了一個功能測試,以確保獲取“/”路由返回狀態代碼 200。它運行良好。 該頁面還可以在顯示“Hello World”文本的瀏覽器中正常加載。

現在是我感到困惑的部分。 我將“Hello World”文本更改為只說“Hello”。 刷新瀏覽器,我收到以下消息:

沒有權限?

如果我再次運行相同的功能測試,它仍然可以通過。 然后,當我在運行測試再次刷新瀏覽器時,它會加載!

我嘗試了許多不同的程序,但似乎只要我對其進行任何更改,頁面就根本不會加載。 但是,任何時候我運行功能測試,然后在瀏覽器中重新加載頁面,它都會顯示得很好。 供參考,這是測試:

<?php

namespace Tests\Feature;

use Illuminate\Foundation\Testing\RefreshDatabase;
use Illuminate\Foundation\Testing\WithFaker;
use Tests\TestCase;

class AppTest extends TestCase
{
    /**
     * Testing that the app's main page loads successfully.
     *
     * @return void
     */
    public function test_app_home_page_loads_successfully(): void
    {
        $response = $this->get('/');

        $response->assertStatus(200);
    }
}

到底是什么導致了這種奇怪的行為?

正如@IGP 和@matiaslauriti 在評論中指出的那樣, storage/framework/views顯然存在權限問題。 但是,它與目錄本身無關,只是該目錄中的一個文件(幾十個)。

我不知道如何或為什么,但一個文件( 83b9b... )有一個所有者:組“root:root”。 該目錄中文件的 rest 歸我和我的團隊所有。

奇怪的是,即使在我運行功能測試時這仍然是正確的,所以我不知道為什么運行該功能測試會導致視圖加載正常,即使該文件仍歸“root:root”所有。

手動更改該文件的 owner:group 確實可以解決問題。 我現在唯一擔心的是不知道它是如何改變的,因此,不知道如何防止這種情況在未來再次發生。 如果有人有任何想法,我很開放。 但是,現在,我將提前 go 並關閉它。

謝謝@IGP 和@matiaslauriti。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM