在Heroku中未安装doctrine/dbal

问题描述:

我在Heroku上运行Laravel项目。为了运行将改变列类型的迁移,我需要安装doctrine/dbal包。我把"doctrine/dbal": "^2.5"行放在composer.json中的"require"对象中。在Heroku中未安装doctrine/dbal

当我将更改推送到Heroku时,它显示了该行。

- Installing doctrine/dbal (v2.5.5) 
    Downloading: 100% 

之后,当我运行heroku run composer show doctrine/dbal它显示。

[InvalidArgumentException] 
Package doctrine/dbal not found 

我也跑了heroku run composer update几次之后。这里是我的命令的完整日志。

C:\xampp\htdocs\jem\red-arrow (master) ([email protected]) 
λ heroku run composer update 
Running composer update on red-arrow... up, run.9733 (Free) 
Loading composer repositories with package information 
Updating dependencies (including require-dev) 
- Removing symfony/polyfill-mbstring (v1.2.0) 
- Installing symfony/polyfill-mbstring (v1.3.0) 
    Downloading: 100% 

- Removing symfony/var-dumper (v3.1.4) 
- Installing symfony/var-dumper (v3.1.8) 
    Downloading: 100% 

- Removing symfony/translation (v3.1.4) 
- Installing symfony/translation (v3.1.8) 
    Downloading: 100% 

- Removing symfony/routing (v3.1.4) 
- Installing symfony/routing (v3.1.8) 
    Downloading: 100% 

- Removing symfony/process (v3.1.4) 
- Installing symfony/process (v3.1.8) 
    Downloading: 100% 

- Removing symfony/http-foundation (v3.1.4) 
- Installing symfony/http-foundation (v3.1.8) 
    Downloading: 100% 

- Removing symfony/event-dispatcher (v3.1.4) 
- Installing symfony/event-dispatcher (v3.2.1) 
    Downloading: 100% 

- Removing psr/log (1.0.0) 
- Installing psr/log (1.0.2) 
    Downloading: 100% 

- Removing symfony/debug (v3.1.4) 
- Installing symfony/debug (v3.1.8) 
    Downloading: 100% 

- Removing symfony/http-kernel (v3.1.4) 
- Installing symfony/http-kernel (v3.1.8) 
    Downloading: 100% 

- Removing symfony/finder (v3.1.4) 
- Installing symfony/finder (v3.1.8) 
    Downloading: 100% 

- Removing symfony/console (v3.1.4) 
- Installing symfony/console (v3.1.8) 
    Downloading: 100% 

- Removing swiftmailer/swiftmailer (v5.4.3) 
- Installing swiftmailer/swiftmailer (v5.4.4) 
    Downloading: 100% 

- Removing paragonie/random_compat (v2.0.2) 
- Installing paragonie/random_compat (v2.0.4) 
    Downloading: 100% 

- Removing ramsey/uuid (3.5.0) 
- Installing ramsey/uuid (3.5.2) 
    Downloading: 100% 

- Removing nikic/php-parser (v2.1.1) 
- Installing nikic/php-parser (v3.0.2) 
    Downloading: 100% 

- Removing psy/psysh (v0.7.2) 
- Installing psy/psysh (v0.8.0) 
    Downloading: 100% 

- Removing monolog/monolog (1.21.0) 
- Installing monolog/monolog (1.22.0) 
    Downloading: 100% 

- Removing league/flysystem (1.0.27) 
- Installing league/flysystem (1.0.32) 
    Downloading: 100% 

- Removing symfony/polyfill-util (v1.2.0) 
- Installing symfony/polyfill-util (v1.3.0) 
    Downloading: 100% 

- Removing symfony/polyfill-php56 (v1.2.0) 
- Installing symfony/polyfill-php56 (v1.3.0) 
    Downloading: 100% 

- Removing jeremeamia/superclosure (2.2.0) 
- Installing jeremeamia/superclosure (2.3.0) 
    Downloading: 100% 

- Removing classpreloader/classpreloader (3.0.0) 
- Installing classpreloader/classpreloader (3.1.0) 
    Downloading: 100% 

- Removing laravel/framework (v5.3.9) 
- Installing laravel/framework (v5.3.28) 
    Downloading: 100% 

- Installing doctrine/lexer (v1.0.1) 
    Downloading: 100% 

- Installing doctrine/collections (v1.3.0) 
    Downloading: 100% 

- Installing doctrine/cache (v1.6.1) 
    Downloading: 100% 

- Installing doctrine/annotations (v1.3.0) 
    Downloading: 100% 

- Installing doctrine/common (v2.6.2) 
    Downloading: 100% 

- Installing doctrine/dbal (v2.5.5) 
    Downloading: 100% 

- Installing fzaninotto/faker (v1.6.0) 
    Downloading: 100% 

- Installing hamcrest/hamcrest-php (v1.2.2) 
    Downloading: 100% 

- Installing mockery/mockery (0.9.6) 
    Downloading: 100% 

- Installing symfony/yaml (v3.2.1) 
    Downloading: 100% 

- Installing sebastian/version (2.0.1) 
    Downloading: 100% 

- Installing sebastian/resource-operations (1.0.0) 
    Downloading: 100% 

- Installing sebastian/recursion-context (2.0.0) 
    Downloading: 100% 

- Installing sebastian/object-enumerator (2.0.0) 
    Downloading: 100% 

- Installing sebastian/global-state (1.1.1) 
    Downloading: 100% 

- Installing sebastian/exporter (2.0.0) 
    Downloading: 100% 

- Installing sebastian/environment (2.0.0) 
    Downloading: 100% 

- Installing sebastian/diff (1.4.1) 
    Downloading: 100% 

- Installing sebastian/comparator (1.2.2) 
    Downloading: 100% 

- Installing doctrine/instantiator (1.0.5) 
    Downloading: 100% 

- Installing phpunit/php-text-template (1.2.1) 
    Downloading: 100% 

- Installing phpunit/phpunit-mock-objects (3.4.3) 
    Downloading: 100% 

- Installing phpunit/php-timer (1.0.8) 
    Downloading: 100% 

- Installing phpunit/php-file-iterator (1.4.2) 
    Downloading: 100% 

- Installing sebastian/code-unit-reverse-lookup (1.0.0) 
    Downloading: 100% 

- Installing phpunit/php-token-stream (1.4.9) 
    Downloading: 100% 

- Installing phpunit/php-code-coverage (4.0.3) 
    Downloading: 100% 

- Installing webmozart/assert (1.2.0) 
    Downloading: 100% 

- Installing phpdocumentor/reflection-common (1.0) 
    Downloading: 100% 

- Installing phpdocumentor/type-resolver (0.2.1) 
    Downloading: 100% 

- Installing phpdocumentor/reflection-docblock (3.1.1) 
    Downloading: 100% 

- Installing phpspec/prophecy (v1.6.2) 
    Downloading: 100% 

- Installing myclabs/deep-copy (1.5.5) 
    Downloading: 100% 

- Installing phpunit/phpunit (5.7.4) 
    Downloading: 100% 

- Installing symfony/css-selector (v3.1.8) 
    Downloading: 100% 

- Installing symfony/dom-crawler (v3.1.8) 
    Downloading: 100% 

sebastian/global-state suggests installing ext-uopz (*) 
phpunit/phpunit-mock-objects suggests installing ext-soap (*) 
phpunit/php-code-coverage suggests installing ext-xdebug (>=2.4.0) 
phpunit/phpunit suggests installing phpunit/php-invoker (~1.1) 
phpunit/phpunit suggests installing ext-xdebug (*) 
Writing lock file 
Generating autoload files 
> Illuminate\Foundation\ComposerScripts::postUpdate 
> php artisan optimize 
Generating optimized class loader 
The compiled class file has been removed. 

C:\xampp\htdocs\jem\red-arrow (master) ([email protected]) 
λ heroku run composer show doctrine/dbal 
Running composer show doctrine/dbal on red-arrow... up, run.6084 (Free) 


[InvalidArgumentException] 
Package doctrine/dbal not found 


show [--all] [-i|--installed] [-p|--platform] [-a|--available] [-s|--self] [-N|--name-only] [-P|--path] [-t|--tree] [-l|--latest] [-o|--outdated] [-D|--direct] [--] [<package>] [<version>] 

链接到混帐回购协议:https://github.com/Jimut/red-arrow

链接到Heroku的应用:http://red-arrow.herokuapp.com/

+0

不要打扰在Heroku上运行'composer update'。编译好slug后对本地文件系统所做的任何更改[只要您的Dyno周期就会丢失](https://devcenter.heroku.com/articles/dynos#ephemeral-filesystem)。 (在你的服务器上运行'composer update'也不是一个好主意,而是使用'composer install')。'heroku run composer show'生成你期望的输出吗?根据执行命令的位置,它可能根本找不到你本地的'vendor /'目录(这是可以的)。唯一重要的是你的code_可以找到你的库。 – Chris

+0

哦!我知道了。问题的发生是因为我只是从''require-dev''将''doctrine/dbal':“^ 2.5”'剪切粘贴到''require''并且没有更新锁定文件。 Heroku在'git push'之后运行'composer install'而不是'composer update'。所以这个软件包没有安装。 我应该写一个答案还是只删除这个问题? – Jem

+0

这取决于你,但请考虑[回答你自己的问题,然后接受你的答案](https://stackoverflow.com/help/self-answer)。这样,其他用户可以从你找到的东西中受益。 – Chris

那么,问题是,composer.lock没有更新之前,我推了回购协议的Heroku 。

Heroku仅在git push之后运行composer install,它读取锁定文件以安装软件包。正如Chris在评论中指出的那样

不要打扰在Heroku上运行Composer更新。 Dyno周期后,您编译段塞后对本地文件系统所做的任何更改都会丢失。

所以最好的做法是,在本地文件系统中编辑composer.json后始终运行composer update然后git push

我感动"doctrine/dbal": "^2.5""require-dev""require"和前推没跑composer update,这是问题的原因。