【问题标题】:Error: You made a reference to a non-existent script @php artisan package:discover错误:您引用了一个不存在的脚本 @php artisan package:discover
【发布时间】:2018-07-23 11:10:02
【问题描述】:

我在 laravel 项目中运行 composer dump-autoload 时遇到错误

composer dump-autoload
Generating autoload files
> Illuminate\Foundation\ComposerScripts::postAutoloadDump
You made a reference to a non-existent script @php artisan package:discover

然后执行 php artisan package:discover 返回

Discovered Package: barryvdh/laravel-ide-helper
Discovered Package: cartalyst/sentinel
Discovered Package: laravelcollective/html
Discovered Package: laracasts/generators
Package manifest generated successfully.

然后又遇到同样的错误

composer dump-autoload
Generating autoload files
> Illuminate\Foundation\ComposerScripts::postAutoloadDump
You made a reference to a non-existent script @php artisan package:discover

可能有什么问题? composer self-updatecomposer global update 没有帮助。

【问题讨论】:

  • 更新作曲家composer global updatecomposer self-update
  • 你试过卸载 composer,然后安装最新版本吗??
  • 我认为composer self-update 已经这样做了
  • 最后一件事,你是不是在 composer 更新后关闭了终端并重新开始??
  • 尝试从 composer.json 文件中删除 @ 符号

标签: php laravel composer-php


【解决方案1】:

我刚刚遇到了这个问题,试图将 composer native cache-clear 命令添加到我制作的名为 composer nuke 的自定义脚本中。我将它用作@clear-cache 并收到消息,“您引用了不存在的脚本@clear-cache”。

我猜@ 符号仅用于自定义命令。我不得不将composer cache-clear 放入自定义命令中,错误得到解决,然后命令按预期运行。

【讨论】:

    【解决方案2】:

    我变了

     "scripts": {
        "post-autoload-dump": [
            "Illuminate\\Foundation\\ComposerScripts::postAutoloadDump",
            "@/usr/local/bin/php artisan package:discover --ansi"
        ],
        "post-root-package-install": [
            "@/usr/local/bin/php -r \"file_exists('.env') || copy('.env.example', '.env');\""
        ],
        "post-create-project-cmd": [
            "@/usr/local/bin/php artisan key:generate --ansi"
        ]
    }
    

    "scripts": {
        "post-autoload-dump": [
            "Illuminate\\Foundation\\ComposerScripts::postAutoloadDump",
            "@php artisan package:discover --ansi"
        ],
        "post-root-package-install": [
            "@/usr/local/bin/php -r \"file_exists('.env') || copy('.env.example', '.env');\""
        ],
        "post-create-project-cmd": [
            "@php artisan key:generate --ansi"
        ]
    }
    

    在 composer.json 中

    【讨论】:

      【解决方案3】:

      您也可以尝试使用此命令更新您的全局 composer 包。

      composer self-update
      

      我遇到了这个错误,因为我有一个旧版本的作曲家没有读取 @ 符号。

      【讨论】:

      • 这个解决方案对我有用。 Docker 容器运行的是旧版本的 composer,因此必须重新构建它以安装当前最新版本。
      【解决方案4】:

      对于我自己,我发现在 composer.json 中我对 php 命令的引用有误:我更改了为 php 指定位置的行,例如:

      "@/usr/local/bin/php artisan key:generate"
      

      到:

      "@php artisan key:generate"
      

      在这些更改之后,我能够毫无错误地执行命令“composer update”。

      【讨论】:

        【解决方案5】:

        好的,我认为 composer dump-autoload 即使有该警告也能正常工作。 (感谢用户:Sohel0415 cmets)作曲家无法运行 在 composer.json 文件中带有 @ 符号的脚本。

        如果你想摆脱这个警告,只需这样做

        composer dump-autoload --no-scripts

        您可以暂时删除composer.json文件中@"scripts": {}中带有@"post-autoload-dump": []的脚本,应该没问题。

        【讨论】:

          猜你喜欢
          • 2018-11-23
          • 2019-03-29
          • 2020-05-25
          • 2020-05-27
          • 2020-04-24
          • 1970-01-01
          • 2020-05-04
          • 1970-01-01
          • 2015-09-19
          相关资源
          最近更新 更多