"php artisan myCommand" 处理返回错误代码 1 的 post-install-cmd 事件
"php artisan myCommand" handling the post-install-cmd event returned with error code 1
我创建了一个控制台命令,它将根据用户输入自动设置数据库,我在 post-install-cmd
中添加了该命令,但是当我 运行 composer install
命令它时 return error code 1
.
如果我 运行 像 php artisan setupDB
那样手动命令它工作,我不知道是什么问题。
可能是我在错误的脚本事件中添加了我的命令!
这是我在 composer.json
文件中的脚本部分。
"scripts": {
"post-autoload-dump": [
"Illuminate\Foundation\ComposerScripts::postAutoloadDump",
"@php artisan package:discover --ansi"
],
"post-root-package-install": [
"@php -r \"file_exists('.env') || copy('.env.example', '.env');\""
],
"post-create-project-cmd": [
"@php artisan key:generate --ansi"
],
"post-install-cmd": [
"Illuminate\Foundation\ComposerScripts::postUpdate",
"php artisan setupDb",
"php artisan optimize"
]
}
这是SS的错误。
问题出在 composer 版本上,因为如果你 运行 post-install-cmd
或 pre-install-cmd
中的任何 artisan 命令,它将 运行 但有些命令要求用户输入,就像我在问题中描述的那样 setupDb
将从用户那里获取输入。
我是如何发现问题的?
我用了一个 post-autoload-dump
的例子
"Illuminate\Foundation\ComposerScripts::postAutoloadDump",
是在这个事件中添加的,我在想控制台命令应该是这样的。
我尝试在 artisan 命令之前在 post-install-cmd
中添加 Illuminate\Console
并且它 return 它已被当前作曲家版本弃用,所以我将我的作曲家更新为 v2,然后它可以工作就像一个魅力。
回答
所以答案是您需要将作曲家版本更新为 运行 post-install-cmd
自定义命令,例如 (setupDb)
"scripts": {
"post-autoload-dump": [
"Illuminate\Foundation\ComposerScripts::postAutoloadDump",
"@php artisan package:discover --ansi"
],
"post-root-package-install": [
"@php -r \"file_exists('.env') || copy('.env.example', '.env');\""
],
"post-create-project-cmd": [
"@php artisan key:generate --ansi"
],
"post-install-cmd": [
"php artisan setupDb",
"php artisan optimize"
]
}
它不会return任何错误,如果有任何命令需要,它也会询问用户输入。
我创建了一个控制台命令,它将根据用户输入自动设置数据库,我在 post-install-cmd
中添加了该命令,但是当我 运行 composer install
命令它时 return error code 1
.
如果我 运行 像 php artisan setupDB
那样手动命令它工作,我不知道是什么问题。
可能是我在错误的脚本事件中添加了我的命令!
这是我在 composer.json
文件中的脚本部分。
"scripts": {
"post-autoload-dump": [
"Illuminate\Foundation\ComposerScripts::postAutoloadDump",
"@php artisan package:discover --ansi"
],
"post-root-package-install": [
"@php -r \"file_exists('.env') || copy('.env.example', '.env');\""
],
"post-create-project-cmd": [
"@php artisan key:generate --ansi"
],
"post-install-cmd": [
"Illuminate\Foundation\ComposerScripts::postUpdate",
"php artisan setupDb",
"php artisan optimize"
]
}
这是SS的错误。
问题出在 composer 版本上,因为如果你 运行 post-install-cmd
或 pre-install-cmd
中的任何 artisan 命令,它将 运行 但有些命令要求用户输入,就像我在问题中描述的那样 setupDb
将从用户那里获取输入。
我是如何发现问题的?
我用了一个 post-autoload-dump
的例子
"Illuminate\Foundation\ComposerScripts::postAutoloadDump",
是在这个事件中添加的,我在想控制台命令应该是这样的。
我尝试在 artisan 命令之前在 post-install-cmd
中添加 Illuminate\Console
并且它 return 它已被当前作曲家版本弃用,所以我将我的作曲家更新为 v2,然后它可以工作就像一个魅力。
回答
所以答案是您需要将作曲家版本更新为 运行 post-install-cmd
自定义命令,例如 (setupDb)
"scripts": {
"post-autoload-dump": [
"Illuminate\Foundation\ComposerScripts::postAutoloadDump",
"@php artisan package:discover --ansi"
],
"post-root-package-install": [
"@php -r \"file_exists('.env') || copy('.env.example', '.env');\""
],
"post-create-project-cmd": [
"@php artisan key:generate --ansi"
],
"post-install-cmd": [
"php artisan setupDb",
"php artisan optimize"
]
}
它不会return任何错误,如果有任何命令需要,它也会询问用户输入。