我有一个完全在浏览器中运行的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错误。有人能告诉我这里我做错了什么吗?
答案 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');
});
它似乎解决了问题