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?
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.
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
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.
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
Vous pouvez définir le nom d'hôte et le port avec des drapeaux de ligne de commande:
--hostname localhost --port 8080
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
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.