在示例 express-jade 项目中为样式表和 js 获取 404

Ris*_*ran 5 static-files node.js http-status-code-404 express

我使用默认的 express 库在 nodejs 中创建了一个简单的静态页面。但是,当我运行它时,nodejs 无法获取公共文件并向它们抛出 404。

我相信我给出的路径是正确的。这让我发疯。我知道问题必须如此微小和简单才能值得面对,但我无法找到它。

你能在这里帮助我吗?

代码位于 github 上的 Rishavs/ComingSoonPage

感谢您的时间和帮助。

~ 里沙夫

Sla*_*avo -3

express.static方法不递归地包含子文件夹。您的脚本和样式分别位于 public/javascripts 和 public/stylesheets 下。您必须让 Express 知道这些文件夹包含应直接提供的静态文件,如下所示:

app.configure(function(){
  app.set('port', process.env.PORT || 3000);
  app.set('views', __dirname + '/views');
  app.set('view engine', 'jade');
  app.use(express.favicon());
  app.use(express.logger('dev'));
  app.use(express.bodyParser());
  app.use(express.methodOverride());
  app.use(app.router);
  app.use(express.static(path.join(__dirname, 'public')));
  app.use('public/javascripts', express.static(path.join(__dirname, 'public/javascripts')));
  app.use('public/stylesheets', express.static(path.join(__dirname, 'public/stylesheets')));
});
Run Code Online (Sandbox Code Playgroud)

最后两行是重要的。请注意,有两个参数传递给该app.use方法。第一个告诉了脚本的服务路径(也就是您必须在浏览器中输入的内容才能获取它)。第二个是文件在服务器上的物理位置。

  • 这是不正确的。我从 public 下的子文件夹访问文件没有问题。问题可能是您在客户端的 URL 中包含了“public/”,这是不必要的。 (8认同)