web-dev-qa-db-fra.com

Comment résoudre Exception Il est dangereux de lancer Dusk en production dans Laravel 5.5?

J'ai mis mon projet de laravel 5.4 à laravel 5.5,

Je n'ai aucun problème dans env locale mais dans le serveur j'obtiens cette exception,

J'ai cherché beaucoup et je sais que ce problème peut être dupliqué mais aucune solution n'a résolu mon problème!

Comment puis-je ne pas enregistrer crépuscule lorsque l'environnement est une production?

j'ai écrit ce code dans AppServiceProvider.php:

public function register()
{
    // Dusk, if env is appropriate
    if ($this->app->environment('local', 'testing')) {
        $this->app->register(DuskServiceProvider::class);
    }
}

mais cela ne semble pas fonctionner .. Quelqu'un peut-il aider?

EDITED: Mon fichier composer.json:

 "require-dev": {
    "filp/whoops": "~2.0",
    "fzaninotto/faker": "~1.4",
    "mockery/mockery": "1.*",
    "phpunit/phpunit": "^7.0.3",
    "symfony/css-selector": "4.0.*",
    "symfony/dom-crawler": "4.0.0",
    "barryvdh/laravel-ide-helper": "^2.4",
    "laravel/dusk": "^2.0"
  },

L'exception est:

Exception
It is unsafe to run Dusk in production.
3
Samira kalantari

Dans Laravel 5.5, les paquets sont automatiquement découverts et chargés, vous devrez donc probablement lui dire de ne pas charger crépuscule.

Une façon est d'ajouter ceci à votre composer.json

"extra": {
    "laravel": {
        "dont-discover": [
            "laravel/dusk"
        ]
    }
},

En outre, vous pouvez l'ajouter à vos dépendances dev et lorsque vous déployez en production, utilisez:

composer install --no-dev

Taylor a écrit un article à ce sujet ici .

13
CUGreen

Regardez, cela ne fonctionne pas car il est configuré pour fonctionner sur les environnements local et testing. Je suppose que vous devez ajouter 'production' (si votre production s'appelle 'production dans votre environnement de fichier .env:

public function register()
{
    // Dusk, if env is appropriate
    if ($this->app->environment('local', 'testing', 'production')) {
        $this->app->register(DuskServiceProvider::class);
    }
}

Lors de l'installation sur un serveur de production, je devais simplement utiliser l'indicateur --no-dev

composer install --no-dev

Bonne chance!

1
Adam Kozlowski

Si vous rencontrez ce problème dans un environnement en développement et que vous avez atterri ici par inadvertance à cause du titre, vérifiez que votre fichier .env est configuré pour le développement. Il devrait contenir la ligne

APP_ENV=local

Voici un exemple de l'apparence possible du fichier .env: https://github.com/laravel/laravel/blob/master/.env.example

Et voici la documentation de Laravel: https://laravel.com/docs/5.7/configuration


De plus, dans composer.json, laravel/dusk devrait figurer sous require-dev et non pas require.

0
Chrisjan