2015-07-06 2 views
1

Я запускаю приложение, которое свободно основано на приложении с угловым заполнением. Он имеет как http-сервер, так и https-сервер с тем же самым экспресс-приложением. Мое приложение отлично работает на моей локальной машине, в http или https, даже когда я запускаю NODE_ENV="production" node server/app.js. Однако, когда я нажимаю папку dist на мой экземпляр AWS ec2, приложение работает только для http://example.com, а не https.Экспресс Служебные файлы из разных мест на https

По адресу https, я получаю Error: ENOENT, stat 'client/index.html' at Error (native). У меня нет клиентской папки, мой клиентский код, такой как index.html, находится в папке с именем public. Я не понимаю, почему этот контент правильно подан в http, но не https, и был бы благодарен, если бы кто-то мог мне помочь.

//Server/app.js file 
var app = express(); 

var httpsServer = require('https').createServer(credentials, app); 
var httpServer = require('http').createServer(app); 
httpsServer.listen(httpsPort, config.ip, function() { 
    console.log('https Express server listening on %d, in %s mode', httpsPort, app.get('env')); 
}); 
httpServer.listen(httpPort, config.ip, function() { 
    console.log('http Express server listening on %d, in %s mode', httpPort, app.get('env')); 
}); 



var env = app.get('env'); 
app.set('views', config.root + '/server/views'); 
app.engine('html', require('ejs').renderFile); 
app.set('view engine', 'html'); 
app.use(compression()); 
app.use(bodyParser.urlencoded({ extended: false })); 
app.use(bodyParser.json()); 
app.use(methodOverride()); 
app.use(cookieParser()); 
app.use(passport.initialize()); 
console.log(env) 
if ('production' === env) { 
    app.use(favicon(path.join(config.root, 'public', 'favicon.ico'))); 
    console.log(path.join(config.root, 'public')); 
    app.use(express.static(path.join(config.root, 'public'))); 
    app.set('appPath', config.root + '/public'); 
    app.use(morgan('dev')); 
} 

if ('development' === env || 'test' === env) { 
    console.log('i am overwriting everything'); 
    app.use(require('connect-livereload')()); 
    app.use(express.static(path.join(config.root, '.tmp'))); 
    app.use(express.static(path.join(config.root, 'client'))); 
    app.set('appPath', 'client'); 
    app.use(morgan('dev')); 
    app.use(errorHandler()); 
} 

env журналы как 'production'. path.join(config.root, 'public') бревна до /home/ubuntu/www/public/ I am overwriting everything никогда не регистрируется.

ответ

0

Похоже, что вы можете запустить ваш development.js после того, как вы нажмете на сервер. Чтобы он не читал вашу разработку, попробуйте добавить стартовый скрипт в свой пакет package.json.

"scripts": { 
    "start": "NODE_ENV="production" node server/app.js" 
}