连接静态中间件无法找到文件

时间:2013-11-24 17:55:48

标签: node.js connect

我正在使用Node.js的Connect静态中间件,以便在我正在构建的Web应用程序中提供静态资源。但是,偶尔它无法提供静态文件,而是将请求发送到我自己的服务器代码,如下所示:

var app = connect();
app.use(connect.static('public'));
app.use(function(request, response) {
  var pathname = url.parse(request.url).pathname;
  console.log(pathname);
  ...
});

因此,在理想情况下,如果静态中间件首先没有捕获对静态文件的请求,则此代码仅记录请求。

public中的我的目录结构如下所示:

public/
  javascripts/
    application.js
    lib/
      jquery-2.0.3.min.js
  stylesheets/
    screen.css

在我的HTML视图中,我正在抓住这些资产:

<script type="text/javascript" src="/javascripts/lib/jquery-2.0.3.min.js"></script>
<script type="text/javascript" src="/javascripts/application.js"></script>
<link rel="stylesheet" href="/stylesheets/screen.css" />

Connect抓取/javascripts/application.js/stylesheets/screen.css文件没有问题,但它无法在/javascripts/lib/中获取我的jquery文件,并且此请求被传递到我的服务器代码,其中中间件应该已经捕获并呈现它。

显然,Connect从子目录lib/获取文件存在某种问题,因为我已经检查了jquery-2.0.3.min.js上的文件权限,它们与{{1}上的文件权限完全相同}}

然而,令人生气的是,这个错误似乎完全是随机出现的。我将启动服务器并且它会有问题,但是当我重新启动服务器时它将会消失。然后在应用程序上进行一些无关的更改(我正在谈论无关,就像在稍微更改CSS文件一样)我将启动服务器并再次出现,并且错误将保持不变,然后在重新启动几次后消失没有对代码库进行任何更改。

因此,这被证明是一个非常难以复制的人。如果有人之前碰到这样的事情,或者知道问题可能是什么,我真的很感激。

如果它有帮助,最接近的我可以查明这个错误的开始是this commit,其中我分解了一个ejs模板,我写成了部分重用页眉和页脚。我不能为我的生活告诉我这可能是怎么开始我的问题,但也许它可能有助于某人诊断问题。

0 个答案:

没有答案