node.js表达不返回默认页面

时间:2018-10-30 01:53:26

标签: node.js express

在此代码中

var history = require('connect-history-api-fallback');
var express = require('express');
var path = require('path');
var app = express();

app.use(history({
    index: 'Trading Inquiry/index.html'
}));
app.use(express.static(path.join(__dirname, 'Trading Inquiry')));
app.get('/', function (req, res) {
    console.log(1);
    res.sendFile('Trading Inquiry/index.html');
});

var server = app.listen(process.env.PORT || 3000, function () {
    var host = server.address().address;
    var port = server.address().port;

    console.log('My site started at http://%s:%s', host, port);
});

我将其设置为链接相对于文件夹Trading Inquiry。加上ig,给出了/路由,返回index.html文件,对于不匹配的路由,还返回index.html文件。但是,当我访问http://localhost:3000时,我会得到

Cannot GET /

这虽然有效

http://localhost:3000/index.html

有人知道怎么了吗?

谢谢

1 个答案:

答案 0 :(得分:1)

Angular, Nginx不使用快速公共路径,因此在发送文件时必须提及文件的绝对路径。

res.sendFile

另一种解决方案(我更喜欢的解决方案)

如果为快速静态中间件提供第一个参数“ /”,则将呈现文件名res.sendFile(path.join(__dirname, 'Trading Inquiry', 'index.html'));

因此,如果您更改以下行:

index.html

您不需要app.use('/', express.static(path.join(__dirname, 'Trading Inquiry'))); 的获取路线,因此不需要以下代码。

index.html