express.static被Nodejs中的redirect指令覆盖

时间:2014-10-23 12:05:27

标签: node.js express

您好我正在尝试使用

路由所有未指定的请求

app.get('*',routes.index);

但问题是,输入无效路由时,没有任何statis内容(js,css文件)加载。但是,在加载定义的路径时,行为完全正常。整个代码块在下面指定

app.use(express.static(path.join(__dirname,'/dist')));
app.use(app.router);

app.use(express.logger('dev'));
// set routes
app.get('/',routes.index);
app.get ('/ecommerce/views/:viewname',routes.views);


app.get('/ecommerce/shoppinglist',routes.shoppinglist);
app.get('*',routes.index);

1 个答案:

答案 0 :(得分:0)

我将假设您使用express v3.X,因为v4.X已弃用app.router

所以,使用node v0.10.18express v3.18.1

并假设以下代码:

var path=require('path'),
    express = require('express'),
    app = express();

app.use(express.static(path.join(__dirname,'/dist')));

app.use(app.router);

app.use(express.logger('dev'));

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

app.get ('/ecommerce/views/:viewname',function(req,res){
    res.send('views');
});

app.get('/ecommerce/shoppinglist',function(req,res){
    res.send('shoppinglist');
});

app.get('*',function(req,res){
    res.send('default');
});

app.listen(3000);

并且您的工作目录布局为:

server.js
dist/
    foo.txt

并且dist / foo.txt包含一行文字:“这是foo”,

然后以下路线产生预期结果:

Route                            Result
-------------                    ------------
/                                index
/ecommerce/views/foo             views
/ecommerce/shoppinglist          shoppinglist
/foo.txt                         this is foo
/foo                             default
/bar                             default
/ecommerce                       default
/ecommerce/views                 default
/ecommerce/views/foo/bar         default

如果您的结果与这些结果不同,您可以考虑通过npm install express@"~3"重新加载快递模块,这将为您提供最新的3.X版本,该版本应为v3.18.1。

最后,如果您希望获得有关视图内容的帮助,请提供用于创建视图内容的模块列表,或者无法正确加载资源的模块的来源。