2015-06-20 79 views
2

我有一個完全在瀏覽器中運行的Angular客戶端應用程序。我正在嘗試使用expressjs來託管它。我在John Papa的MEAN Hot Towel應用程序中的server.js之後模擬了服務器代碼,該應用程序在他的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時,我得到了乒乓回來。當我導航到本地主機:端口/我得到一個404錯誤。有人能告訴我我在這裏做錯了嗎?

+0

你有沒有一個路線'/ ' – tommyd456

+0

我知道了,但約翰帕帕的申請沒有,我也看到了一些例子顯示'/ *'作爲快遞角度應用的下降 – 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'));更換app.use('/*', express.static('./src/index.html'));解決您的問題和index.html會下享用「本地主機:端口/」

+0

好的,這讓我有了index.html,但我仍然在所有其他應用程序文件上收到404錯誤。 – pthalacker

相關問題