2015-06-20 3 views
2

У меня есть приложение с угловым клиентом, которое полностью работает в браузере. Я пытаюсь использовать expressjs для его размещения. Я смоделировал код сервера после server.js в приложении APAN для горячего полотенца John Papa, которое он использует в своем курсе Pluralsight Gulp. Это мой код сервера:ExpressJs не обслуживает index.html

var express = require('express'); 
var app = express(); 
var port = process.env.PORT || 7203; 
var environment = process.env.NODE_ENV; 

console.log('About to crank up node'); 
console.log('PORT=' + port); 
console.log('NODE_ENV=' + environment); 

app.get('/ping', function(req, res) { 
    console.log(req.body); 
    res.send('pong'); 
}); 

console.log('** DEV **'); 
app.use(express.static('./src/app')); 
app.use(express.static('./')); 
app.use(express.static('./temp')); 
app.use('/*', express.static('./src/index.html')); 

app.listen(port, function() { 
    console.log('Express server listening on port ' + port); 
    console.log('env = ' + app.get('env') + 
     '\n__dirname = ' + __dirname + 
     '\nprocess.cwd = ' + process.cwd()); 
}); 

Когда я перехожу к localhost: port/ping, я получаю понг обратно. Когда я перехожу к localhost: port/я получаю ошибку 404. Может ли кто-нибудь сказать мне, что я делаю неправильно здесь?

+0

у вас нет пути для '/ ' – tommyd456

+0

Я знаю, но приложение John Papa тоже не так, и я видел несколько примеров, показывающих«/* »как провал для экспресс-угловых приложений. – pthalacker

+0

Я использую только * без/ – tommyd456

ответ

0

Таким образом, после многих часов возился и чтения я заменил этот код:

app.use(express.static('./src/app')); 
app.use(express.static('./')); 
app.use(express.static('./temp')); 
app.use('/*', express.static('./src/index.html')); 

с это:

app.use(express.static(__dirname)); 
app.use(express.static(process.cwd())); 

app.route('/*') 
    .get(function(req, res) { 
     res.sendFile(__dirname + '/index.html'); 
    }); 

и это, кажется, решили проблему

0

Как @ tommyd456 указано в приведенных выше комментариев, вам нужно объявить маршрут для «/», например так:

app.get('/', function(req, res) { 
    res.send('Hello!'); 
}); 
0

Из экспресс documentation, кажется, что express.static нацелен на папка.
Таким образом, заменив app.use('/*', express.static('./src/index.html')); на app.use('/*', express.static('./src')); исправить вашу проблему и index.html будет подан под «LOCALHOST: порт /»

+0

Хорошо, что я получил index.html, но я все еще получаю 404 ошибки во всех остальных файлах приложения. – pthalacker