Express.js中的默认路由

我正在写一个应用程序与node.js和expression。

我已经设置了一个默认路由,如下所示:

app.get('/', function(req, res){ res.sendfile('./views/index.html'); }); 

当我goto / localhost:port /

但在URL后面input任何东西时,/ localhost:port / blah我得到了404错误,这是有道理的。

我想设置一个默认路由,这样无论我在localhost:port /后面input什么URL,它都应该得到相同的html文件。

我试着改变/ *:

 app.get('*', function(req, res){ res.sendfile('./views/index.html'); }); 

但是当我这样做后,我开始在控制台中得到这个错误,什么也没有显示:

未捕获的SyntaxError:意外的标记<

在我所有的Javascript文件中::3000 / scripts / myscript.js:1

不知何故,我的JavaScript文件显示HTML的内容

===编辑====

我用这个,它为一级url工作正常:像loclhost:端口/等等

 app.use(function(req, res){ res.sendfile('./views/index.html'); }); 

但是当URL是多层时,我看到与前面描述相同的问题localhost:port / blah / foo这里的问题是路由器正在寻找/ blah文件夹下的所有JavaScript和CSS文件的公共目录,这样做不存在。 它将返回默认的HTML文件。 我该如何解决?

==================编辑张贴整个代码=========================== ==============

 var http = require('http'); var express = require('express'); var api = require('./routes/api'); var mongoose = require('mongoose'); var app = express(); mongoose.connect('mongodb://localhost/mydb'); app.set('port', process.env.PORT || 3000); app.set('view engine', 'jade'); app.use(express.favicon()); app.use(express.logger('dev')); app.use(express.json()); app.use(express.urlencoded()); app.use(express.methodOverride()); app.use(express.cookieParser('your secret here')); app.use(express.session()); app.use(app.router); app.use(express.static(__dirname + '/public')); app.get('/api/user/:userid', api.getUserInfo); app.get('/', function(req, res){ res.sendfile('./views/index.html'); }); http.createServer(app).listen(app.get('port'), function(){ console.log('Express server listening on port ' + app.get('port')); }); 

除此之外,我有一个链接在其中的myscript的HTML,

 <script type="text/javascript" src="./scripts/myscript.js" ></script> 

如上所述,您可以在路由逻辑之后添加这个中间件:

  app.use(function(req, res){ res.send(404); }); 

你可能会发现这个答案也很有用。

当然,您需要调整res.send()部分以满足您的需求。

希望能帮助到你。

之前的所有路线之后添加此路线

 app.get('*',function (req, res) { res.redirect('/'); }); 

这会将任何未处理的路由redirect到索引“/”

随着更新版本的快递,我build议使用res.sendStatus作为res.send已被弃用。

Express v3

 app.use(function(req, res){ res.send(404); }); 

Express v4

 app.use(function(req, res){ res.sendStatus(404); });