2017-02-03 72 views
0

我正在用Laravel 5構建一個網站。 Laravel正在使用作曲家作爲依賴管理。作曲家自動生成錯誤路徑

每當我運行composer dump-autoload自動加載類生成。 不幸的是,其中兩個文件的路徑是錯誤的。

我正在使用一個種子類和Laravel內的一些遷移,它分別位於database/seedsdatabase/migrations

數據庫文件夾下的所有類(遷移,種子)的生成路徑是錯誤的。 路徑看起來像$baseDir . '/atabase/migrations/2017_02_02_153131_create_cards_table.php' 正如您所看到的,「數據庫」中的「d」缺失。

據我所知,自動載入類是在composer.json文件中定義的。 但這裏似乎是正確的:

"autoload": { 
    "classmap": [ 
     "database" 
    ], 
    "psr-4": { 
     "App\\": "app/" 
    } 
} 

的遷移工作,但種子都沒有。 當我做了搜索&更換和糾正路徑一切都很好,除非我做composer dump-autoload

我與Laravel 5.4.8和1.3.2作曲在Windows 10的機器上開發。


編輯: 這裏是composer dump-autoload -vvv

PS C:\Users\phoef\Documents\Projekte\CardViewer> composer dump-autoload -vvv 
Reading ./composer.json 
Loading config file ./composer.json 
Checked CA file C:\Users\phoef\AppData\Local\Temp\composer-cacert- 300c74d6960d46715ffed607c8e36acfa7cbcad49862bb1b67d3c43dea9bfb40.pem: valid 
Executing command (C:\Users\phoef\Documents\Projekte\CardViewer): git branch --no-color --no-abbrev -v 
Reading C:/Users/phoef/AppData/Roaming/Composer/composer.json 
Loading config file C:/Users/phoef/AppData/Roaming/Composer/composer.json 
Reading C:\Users\phoef\Documents\Projekte\CardViewer/vendor/composer/installed.json 
Reading C:/Users/phoef/AppData/Roaming/Composer/vendor/composer/installed.json 
Running 1.3.2 (2017-01-27 18:23:41) with PHP 7.1.1 on Windows NT/10.0 
Generating autoload files 

輸出兩個文件方含在錯誤的道路是:autoload_classmap.phpautoload_static.php


編輯2: 請找到完整composer.json

{ 
"name": "laravel/laravel", 
"description": "The Laravel Framework.", 
"keywords": ["framework", "laravel"], 
"license": "MIT", 
"type": "project", 
"require": { 
    "php": ">=5.6.4", 
    "laravel/framework": "5.4.*", 
    "laravel/tinker": "~1.0" 
}, 
"require-dev": { 
    "fzaninotto/faker": "~1.4", 
    "mockery/mockery": "0.9.*", 
    "phpunit/phpunit": "~5.7" 
}, 
"autoload": { 
    "classmap": [ 
     "database" 
    ], 
    "psr-4": { 
     "App\\": "app/" 
    } 
}, 
"autoload-dev": { 
    "psr-4": { 
     "Tests\\": "tests/" 
    } 
}, 
"scripts": { 
    "post-root-package-install": [ 
     "php -r \"file_exists('.env') || copy('.env.example', '.env');\"" 
    ], 
    "post-create-project-cmd": [ 
     "php artisan key:generate" 
    ], 
    "post-install-cmd": [ 
     "Illuminate\\Foundation\\ComposerScripts::postInstall", 
     "php artisan optimize" 
    ], 
    "post-update-cmd": [ 
     "Illuminate\\Foundation\\ComposerScripts::postUpdate", 
     "php artisan optimize" 
    ] 
}, 
"config": { 
    "preferred-install": "dist", 
    "sort-packages": true 
    } 
} 
+0

使用'作曲家自卸自動加載-vvv'得到什麼做的更多信息。 – Troyer

+0

在帖子中增加了'compower dump-autoload -vvv'的輸出。謝謝。 – caldicot

+0

我有同樣的錯誤,我無法解決它。 –

回答

-3

你正在做的事情錯了下面。您需要重置項目並從頭開始。

+0

該項目實際上是乾淨的。我3天前開始了這個項目。我在創建第一個種子後注意到了這種行爲。 – caldicot

+0

分享你的作曲家文件。 –

+0

我將完整的'composer.json'添加到了我原來的文章中。 – caldicot

0

種子和遷移生活在database/目錄中(來自項目根目錄),而不在app/之內。例如,你會有database/seeds/CardsTableSeeder.php

您是否使用artisan創建了它們?

php artisan make:migration create_cards_table

php artisan make:seed CardsTableSeeder

它不是必需這樣做,但它的方便,以確保你讓他們在正確的目錄。

這是我的autoload,你錯過了psr-4鍵。

"autoload": { 
    "classmap": [ 
     "database" 
    ], 
    "psr-4": { 
     "App\\": "app/" 
    } 
} 

我noidea爲什麼它做atabase,對不起

+0

對不起,這是我的文章中的一個錯字。種子和遷移位於'database/seeds'和'database/migrations'不在'app'文件夾下面。我在我的帖子中糾正了這個問題。 是的,我用你提到的這兩個命令創建了種子和工匠的遷移。 再次,抱歉沒有發佈psr-4密鑰。 「composer.json」中的'autoload'部分與您的完全一樣。 – caldicot