所有请求都在控制台中显示GET / 404 8.128 ms-13
。
我已经发布了下面的代码,代码中没有错误。我可以运行其他NodeJS
个应用程序。但这在控制台中显示404。它甚至没有显示fav图标。它曾经显示Cannot GET /
错误,当时可以看到收藏夹图标。
'use strict';
var express = require('express');
var app = express();
var bodyParser = require('body-parser');
var favicon = require('serve-favicon');
var logger = require('morgan');
var port = process.env.PORT || 8001;
var four0four = require('./utils/404')();
var environment = process.env.NODE_ENV;
app.use(favicon(__dirname + '/favicon.ico'));
app.use(bodyParser.urlencoded({extended: true}));
app.use(bodyParser.json());
app.use(logger('dev'));
app.use('/api', require('./routes'));
console.log('About to crank up node');
console.log('PORT=' + port);
console.log('NODE_ENV=' + environment);
switch (environment){
default:
console.log('** DEV **');
app.use(express.static('./src/client/'));
app.use(express.static('./'));
app.use(express.static('./tmp'));
app.use('/app/*', function(req, res, next) {
four0four.send404(req, res);
});
app.use('/*', express.static('./src/client/index.html'));
break;
}
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());
});
答案 0 :(得分:1)
根据http://expressjs.com/starter/static-files.html我认为您的路线app.use('/*', express.static('./src/client/index.html'));
将使用./src/client/index.html
作为基本路径,并附加您提供的任何内容以查找文件。例如
/some-file
会查找明显不存在的./src/client/index.html/some-file
如果您想更多地了解它,静态中间件在内部使用https://github.com/pillarjs/send来传输文件
所以你可以做到这一点
app.use('/*', express.static('./src/client'));
默认情况下,会将/
设置为src/client/index.html
,您可以通过设置https://github.com/expressjs/serve-static
index
选项来更改此行为
如果您想将/*
重定向到./src/client/index.html
,请执行此操作
// first set the static middleware
app.use('/public', express.static('./src/client'));
// then use redirect
app.get('/*', function(req, res, next){
res.redirect('/public/index.html');
});
此设置会将所有内容重定向到public/index.html
。如果要添加API或其他路由,请将其放在app.get('/*')