ExpressJs不提供index.html

时间:2015-06-20 21:18:26

标签: javascript angularjs express

我有一个完全在浏览器中运行的Angular客户端应用程序。我正在尝试使用expressjs来托管它。我在John Papa的MEAN Hot Towel应用程序中的server.js之后对服务器代码进行了建模,他在Pluralsight Gulp课程中使用了该应用程序。这是我的服务器代码:

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错误。有人能告诉我这里我做错了什么吗?

3 个答案:

答案 0 :(得分:0)

正如@ tommyd456在上面的评论中所述,您需要为'/'声明一条路线,如下所示:

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

答案 1 :(得分:0)

从快递documentation开始,似乎 express.static 定位文件夹
因此,将app.use('/*', express.static('./src/index.html'));替换为app.use('/*', express.static('./src'));可以解决您的问题,而index.html将在' localhost:port /'

下提供

答案 2 :(得分: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');
    });

它似乎解决了问题