我正在使用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}上的文件权限完全相同}}
因此,这被证明是一个非常难以复制的人。如果有人之前碰到这样的事情,或者知道问题可能是什么,我真的很感激。
如果它有帮助,最接近的我可以查明这个错误的开始是this commit,其中我分解了一个ejs模板,我写成了部分重用页眉和页脚。我不能为我的生活告诉我这可能是怎么开始我的问题,但也许它可能有助于某人诊断问题。