簡體   English   中英

ExpressJs不提供index.html

[英]ExpressJs is not serving index.html

我有一個完全在瀏覽器中運行的Angular客戶端應用程序。 我正在嘗試使用expressjs托管它。 我在John Papa在他的Pluralsight Gulp課程中使用的MEAN Hot Towel應用程序中的server.js建模了服務器代碼。 這是我的服務器代碼:

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時,我得到了pong。 當我導航到localhost:port /時,出現404錯誤。 有人可以告訴我我在做什么錯嗎?

如上述注釋中的@ tommyd456所示,您需要聲明'/'的路由,如下所示:

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

從express 文檔中 ,似乎express.static是針對文件夾的
因此,替換app.use('/*', express.static('./src/index.html')); 通過app.use('/*', express.static('./src')); 解決您的問題,index.html將在“ localhost:port /”下提供

因此,經過數小時的擺弄和閱讀,我替換了以下代碼:

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');
    });

看來已經解決了問題

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM