2014-10-25 9 views
8

Ich betreibe eine Express-App auf node.js. Die App verwendet die express-subdomain module, um Routen für zwei verschiedene Subdomains (sub1.example.com und sub2.example.com) zu behandeln. Ich hosste die App auf AWS Elastic Beanstalk. In meiner Produktionsumgebung funktioniert alles super. Aber auf meinem lokalen Rechner kann ich das nicht zur Arbeit bringen. Ich habe versucht, die Subdomains meiner Host-Datei 127.0.0.1 localhost sub1.localhost sub2.localhost hinzuzufügen. Obwohl es mir erlaubt, eine Subdomain an localhost anzuhängen, erkennt das Modul dies nicht als gültige Subdomain und sucht daher nach Subdomainrouten in meinen Rootrouten.So richten Sie lokale Sub-Domains für die Node.js-App ein

In main.js:

var routes = require('./routes/index')(passport); 
var sub1_routes = require('./routes/sub1')(passport); 
var sub2_routes = require('./routes/sub2')(passport); 

app.use(subdomain('sub1', sub1_routes)); 
app.use(subdomain('sub2', sub1_routes)); 
app.use('/', routes); 

Ich muss in der Lage sein, dies vor Ort zu behandeln. Es braucht viel Zeit, um eine kleine Änderung an AWS-Test zu schieben, Iterierte usw.

Antwort

20

Ich bin der Autor des Moduls :)

Für jede neue Sub-Domain Sie möchten lokal testen Sie müssen hinzufügen in Ihre/etc/hosts-Datei. So zum Beispiel:

localhost:

127.0.0.1  localhost 

eine neue Sub-Domain wäre ..

127.0.0.1  sub1.localhost 

und andere ..

127.0.0.1  sub2.localhost 

Überprüfen Sie heraus, was ich getan habe in die tests.

+0

Diese Lösung scheint für mich nicht zu funktionieren und Ihre Tests scheinen nur nach localhost (ohne Subdomains) und 'example.com' zu suchen. Ich war in der Lage, mein Problem zu beheben, indem ich "subdomain.example.com" zu meiner Hosts-Datei hinzufügte und diese als meine Dev-URL verwendete. – Jordan

+2

Entschuldigung, der eigentliche Grund liegt darin, dass es keine Top-Level-Domain gibt, z.B. .com oder .co.uk. Ich habe die README aktualisiert, um dies zu beschreiben. – bmullan91

3

Ich hatte das gleiche genaue Problem und ich fand eine einfache Lösung. Anstatt sub1.localhost zu schreiben versuchen Sie localhost durch lvh.me zu ersetzen das ist eine Domäne, die immer zu localhost auflöst und jetzt, wann immer Sie sub1.lvh.me schreiben, obwohl ein Hafen wie sub1.lvh.me:3000 es noch arbeitet.

+0

Wessen Domain ist das? Das ist ziemlich toll. –