这类似于条目21105801,但不完全相同。
(版本:[email protected],[email protected])
我正在尝试创建一条路由,该路由将为动态页面(如果找到)或通过静态路由(通过next())传递给静态路由器。
我的路线应该这样运行,app.get('/'->身份验证->尝试动态投放->尝试静态投放。
我添加了一个处理Oauth 1和2的授权路由,并且仅静态页面就可以正常工作。但是我想在身份验证后提供自定义页面,我遇到了三个问题。
这里是路线:
app.use(
"/", // i like being pedantic
authorize, // pass through the auth filter
function(req, res, next) { // try to serve dynamic page
// build the filename
var file = __dirname + '/restricted' + req.url;
console.log("Rendering file " + file);
res.render(file, { username: req.user.username } , function(err, html) {
if (err) {
console.log("ERROR: " + err);
next(); // pass to static router
} else {
res.send(html); // or send the page
}
})
},
// fallthrough route for js/css statics
express.static(__dirname + "/restricted")
);
这里是错误,它正在尝试读取index.html,它调用了CSS模板和JS rel。
GET /auth/twitter/callback?oauth_token=... 302 329.979 ms - 78
Rendering file /home/pt/www/restricted/index.html
ERROR: null
^---- this worked!
GET /index.html 200 7.097 ms - 838
Rendering file /home/pt/www/restricted/css/foundation.css
^---- that's the file I want to read!
GET /css/foundation.css 500 9.846 ms - 871
^---- keep going!!!
Error: Cannot find module 'css'
^---- DOH! Why does it look for a module?!?!? Why no error callback?
at Function.Module._resolveFilename (module.js:338:15)
at Function.Module._load (module.js:280:25)
at Module.require (module.js:364:17)
提前感谢。
我想我想做的事情确实很明显,但是几乎所有的动态视图引擎示例都为每个显式文件调用res.render('filename'),这似乎很荒谬:为什么每次添加一个时都要更改路由器代码新的动态页面?
//Serves resources from public folder
app.use('/',express.static(__dirname + '/public'));
//Verify the complete directory path - especially slashes
console.log('Static directory '+__dirname + '/public');
//serve on custom routes
app.get('/list', function (req, res) {
res.send('<html><body><h1>Hello World</h1></body></html>'); });