[英]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.