【问题标题】:How do I serve a static file using Node Express?如何使用 Node Express 提供静态文件?
【发布时间】:2015-02-25 21:17:11
【问题描述】:

我在使用 Express 和 Node.js 设置一个非常基本的静态文件服务器时遇到了麻烦。我设置了一个简单的server.js,但在我的网络浏览器中加载 URL localhost:9000 时看不到任何文件。

我看到的只是一个页面:Cannot get /

var express = require('express');
var app = express();

app.use(function(req, res, next) {
  next();
});

app.use(express.static(__dirname));

app.listen(9000);

【问题讨论】:

    标签: javascript node.js express static


    【解决方案1】:

    只是你什么都不暴露。例如,您有 index.html 文件吗?试试这个:

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

    【讨论】:

      【解决方案2】:

      您参加过 NodeSchool 研讨会吗?他们提供了涵盖此内容及更多内容的分步示例。

      Here is the workshop for Express

      这是我对研讨会中“静态”问题的解决方案。

      var express = require('express')
      var app = express()
      
      app.use(express.static(process.argv[3]||path.join(__dirname, 'public')));
       app.use(require('stylus').middleware(__dirname + '/public'));
      
      app.post('/form', function(req, res) {
         res.writeHead(200, { 'Content-Type': 'text/plain' })
         res.end()
      })
      
      app.listen(process.argv[2])
      

      【讨论】:

      • 这应该是一条评论。
      • 我编辑添加了相关的解决方案代码。请撤消反对票。谢谢!
      • 解释为什么这是解决方案,我会考虑它,但代码块并不比盲链接更好。
      • 当然。根据此处另一个答案的 cmets 线程,我表示 Express CAN 确实可以提供静态文件以响应对目录的请求(与@Alistair 所说的相反)。这是一个如何使用 static() 函数配置 Express 以提供来自特定目录的文件的示例。它还更正了原始帖子中省略使用 path.join() 的代码。谢谢!
      【解决方案3】:

      Express 不会创建目录列表。即使它没有列出目录中的文件,它也会在网络浏览器中点击它们时提供它们。

      将浏览器指向实际文件:

      http://localhost:9000/public/test.html

      最初我觉得这很令人困惑,因为我希望快速服务器列出目录;当看到“某事”...一个显示“无法获取 /”的页面时,我认为该页面通常会有一个文件列表。

      【讨论】:

      • 但您实际上可以配置 express 以提供特定文件以响应对目录的请求。
      猜你喜欢
      • 1970-01-01
      • 2017-07-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多