快递中的静态中间件只是不提供文件

时间:2013-12-11 10:11:44

标签: node.js express passport.js

我有以下目录结构

/app
   js
   css

/node
   server.js

index.html
dashboard.html

我正在使用

app.use(express.static( __dirname + '/../'));

用于访问index.html和dashobard.html(在server.js中)

以下路线运作正常:

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

但是这个不起作用

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

我明白了

Error: ENOENT, stat 'dashboard.html'

1 个答案:

答案 0 :(得分:1)

您可以在没有express.static

的情况下调用res.sendfile

针对您的问题:

我猜 res.sendfile('index.html')res.sendfile('dashboard.html') 不正确,它们应该是

var root = fs.realpathSync('..');
res.sendfile(path.join(root, 'index.html'))
res.sendfile(path.join(root, 'dashboard.html'));

但为什么你没有看到app.get('/', ...)上的错误? 因为它已经被静态中间件处理了。注意/< ==> /index.html。

关于错误/仪表板 app.get('/dashboard', ...)被调用,但无法在'/node'文件夹中找到“dashboard.html”,因此发生了错误的ENOENT。