【问题标题】:Class 'Way\Generators\GeneratorsServiceProvider' not found找不到类“Way\Generators\GeneratorsServiceProvider”
【发布时间】:2019-02-19 20:14:58
【问题描述】:

我正在尝试让 Laravel 在 Google App Engine Standard 上运行。我已经让它灵活地工作了,但是需求发生了变化,我们现在需要标准。我在 Laravel 5.7 中使用 PHP 7.2 环境。部署工作,但是当我试图访问一个页面时,我只是在日志中得到一个错误:

Symfony\Component\Debug\Exception\FatalThrowableError: Class 'Way\Generators\GeneratorsServiceProvider' not found
at Illuminate\Foundation\Application->register (/srv/vendor/laravel/framework/src/Illuminate/Foundation/Application.php:662)

至少在本地对我来说第 662 行只是 return new $provider($this);,它似乎没有明确引用生成器包。

那个生成器包似乎是way/generators,但是当我在本地执行composer require way/generators 时,它会发出一百万个不同的警告,然后是

> Illuminate\Foundation\ComposerScripts::postAutoloadDump
> @php artisan package:discover --ansi

In GeneratorsServiceProvider.php line 58:

  Call to undefined method Illuminate\Foundation\Application::share()  


Script @php artisan package:discover --ansi handling the post-autoload-dump event returned with error code 1

从我读过的内容来看,Laravel > 5 不需要生成器包,因为它已经包含了它,但由于某种原因在 GAE 上它试图引用它(在本地它运行良好 artisan serve)。我尝试了各种 composer post install 命令,但没有任何帮助。

"post-install-cmd": [
            "php artisan cache:clear",
            "php artisan optimize:clear",
            "php artisan config:clear",
            "php artisan config:cache",
            "Illuminate\\Foundation\\ComposerScripts::postInstall",
            "php artisan optimize",
            "chmod -R 755 bootstrap\/cache"
        ]

【问题讨论】:

  • 奇怪!在 GAE 和本地运行 composer depends way/generators 以查看您的哪些依赖项需要它可能会有所帮助。
  • @1000Nettles 在本地和 GAE 上我刚回来[InvalidArgumentException] Could not find package "way/generators" in your project。似乎图书馆存在的问题不是问题,而是它不存在,而 Laravel 试图引用它
  • Laravel 默认不附带这个库,这就是为什么这真的很奇怪。接下来的步骤值得在你的代码库中搜索Way\Generators,看看它是否会在某个时候以某种方式偷偷进入。特别是查看config/app.php 以了解与它相关的任何内容。
  • 是的,如果我运行的是 Laravel "way/generators": "^3.0” 添加到我的 composer.json 要求部分,当我部署到 GAE 时,它实际上只是正确部署并且没有吐出对未定义方法的调用。它安装正确,现在我在 GAE 上遇到不同的错误。更奇怪的是,它实际上是 require dev 中的某些东西正在使用的方式生成器xethron/migrations-generator 的克隆。核弹解决了这一切
  • 很高兴你明白了。 :)

标签: php laravel google-app-engine composer-php google-app-engine-php


【解决方案1】:

正如您在 cmets 中提到的,问题源于使用 xethron/migrations-generator (https://github.com/Xethron/migrations-generator),这需要在 config/app.phpapp/Providers/AppServiceProvider.php 中额外手动设置服务提供商。奇怪的是它的composer.json 不需要way/generators,而是包含另一个包,其中还包含way/generators 的文件(?)。很奇怪,但解释了为什么composer install 上的事情会变得一团糟。

正如你所做的那样,核对它是一个选项或完成手动设置也可能没问题,尽管way/generators 是针对旧版本的 Laravel 并且不一定能 100% 工作。

【讨论】:

  • 是的,奇怪的是,GAE 没有省略开发依赖项,但是很好
  • 是的 - 你确定你在 GAE 上运行 composer install --no-dev 以省略开发依赖项吗?
  • 你别无选择,标准环境随它的作曲家
猜你喜欢
  • 2015-07-22
  • 2017-07-16
  • 1970-01-01
  • 2015-07-31
  • 1970-01-01
  • 2016-11-05
  • 2020-10-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多