web-dev-qa-db-fra.com

Changer le nom d'hôte et le port avec Vapor 3

Le fichier Config/server.json ne semble pas être lu par Vapor 3, et en tant que tel, je ne peux pas configurer le nom d'hôte et le port auxquels une application Vapor 3 se lie.

Est-ce que Vapor 3 a une méthode différente pour cela?

12
Adam Young

Actuellement, vous pouvez définir le port et le nom d'hôte lors de l'exécution de votre serveur:

Swift run Run --hostname 0.0.0.0 --port 9000

Il y a semble être configuration basée sur la structure pour EngineServer mais je ne pense pas qu'elle soit configurable au moment de l'exécution. La dernière fois que le développeur Vapor a répondu à cette question (sur leur Slack), la méthode d'argument en ligne de commande était celle suggérée.

16
tobygriffin

Vous pouvez utiliser NIOServerConfig.

let serverConfiure = NIOServerConfig.default(hostname: "0.0.0.0", port: 9090)
services.register(serverConfiure)

La version vapeur est 3.0.3

21
Passaction

Assurez-vous que vous utilisez la version Vapor 3, puis utilisez ceci:

vapor run --hostname=0.0.0.0 --port=8080

Si vous n'ajoutez pas= après le paramètre, vous allez recevoir la réclamation suivante:

CommandError: Unknown command 8080

Si vous faites comme je l'ai recommandé ci-dessus, vous allez recevoir:

[Deprecated] --option=value syntax is deprecated.

Veuillez utiliser la valeur --option (sans no =) à la place, mais la commande s'exécutera et fonctionnera correctement.

Je n'ai pas pu trouver un moyen d'exécuter cette commande sans = après le paramètre.

4
Bruno Reis Portela

Mon 0,02 $

import Vapor

/// Called before your application initializes.
///
/// [Learn More →](https://docs.vapor.codes/3.0/getting-started/structure/#configureswift)
public func configure(
    _ config: inout Config,
    _ env: inout Environment,
    _ services: inout Services
    ) throws {
    if env == .development {
        services.register(Server.self) { container -> EngineServer in
            var serverConfig = try container.make() as EngineServerConfig
            serverConfig.port = 8989
            serverConfig.hostname = "192.168.31.215"
            let server = EngineServer(
                config: serverConfig,
                container: container
            )
            return server
        }
    }

    //Other configure code
}

Il fonctionne parfaitement sur Vapor 3.0.0 RC 2.4.1

4
imike

Vous pouvez définir le nom d'hôte et le port avec des drapeaux de ligne de commande:

--hostname localhost --port 8080

3
Daniel Seither

La modification des "Arguments transmis au lancement" du programme Run a également fonctionné pour moi.

enter image description hereenter image description here

1
gflo

Vous pouvez également enregistrer votre EngineServerConfig dans services.

Dans configure.Swift, insérez le code ci-dessous:

let myServerConfig = try EngineServerConfig.detect(from: &env, port: 8081)
services.register(myServerConfig)

Cela devrait fonctionner pour 3.0.0-rc.2.2

1
Honghao Zhang

Ce que iOS Guy avait écrit nécessite un peu de modification pour Vapor 3.3.1 // Define Hostname & Port to listen to ... let myServerConfig = NIOServerConfig.default(hostname: "localhost", port: 8081) services.register(myServerConfig)

Alors NIOServerConfig.default ne peut être utilisé qu'avec deux paramètres hostname & port et il peut être utilisé si l'on veut juste changer le numéro de port.

0
riskdoctor