私は表現するのが初めてで、ページを立ち上げて実行しています...
/*
* Module dependencies
*/
var express = require('express'),
stylus = require('stylus'),
nib = require('nib'),
app = express(),
fs = require('fs'),
path = require('path')
function compile(str, path) {
return stylus(str).set('filename', path).use(nib())
}
app.set('views', __dirname + '/views')
app.set('view engine', 'jade')
app.use(express.logger('dev'))
app.use(stylus.middleware({
src: __dirname + '/public',
compile: compile
}))
app.use(express.static(__dirname + '/public'))
app.get('/', function(req, res) {
res.render('index', {
title: 'Home'
})
})
app.use(function(req, res, next){
// test if te file exists
if(typeof fs.existsSync != "undefined"){
exists = fs.existsSync
} else {
exists = path.existsSync
}
// if it does, then render it
if(exists("views"+req.url+".jade")){
res.render(req.url.replace(/^\//,''), { title: 'Home' })
// otherwise render the error page
} else {
console.log("views"+req.url+".jade")
res.render('404', { status: 404, url: req.url, title: '404 - what happened..?' });
}
});
app.listen(3000)
私が抱えている問題は、ページが存在するかどうかを判断するためにファイルシステムの非常に貧弱なチェックを使用したことです。これを処理するためのより良い方法があると思いますが、私のグーグル検索では結果が得られませんでした。
使用しようとするapp.error
と、undefined
メッセージが表示されます。
ファイルシステムの読み取り手順を実行せずに、指定されたアドレスをレンダリングしてエラーをキャッチしたいだけです。