无法使用Node 0.9和最新的express 4.11.2提供静态目录

时间:2015-02-04 16:58:13

标签: node.js express

使用以下简单节点服务器

var express = require('express');
var app = express();
var path = require('path');
app.use(express.static(path.join(__dirname, 'public'))); //  "public" off of current is root
app.listen(3000);
console.log('Listening on port 3000');

我当然在我的root中放了一个'public'目录,并在其中删除了一个index.html文件,但当我指向浏览器时

  

http://localhost:3000/public/

我得到了

  

无法GET / public /

2 个答案:

答案 0 :(得分:0)

从快递开始,这个也引起了我的注意。

无法访问

http://localhost:3000/public/

例如,假设您在公共目录中有一个css文件夹,其文件名为styles.css

您的浏览器可以http://localhost:3000/css/styles.css访问该文件。

有关express.static的快速文档,请访问:app.use (under the two example tables)

编辑1:请参阅此answer here

编辑2:@Leonid Beschastny回答是正确的,我没有看到app.use(express.static(path.join(__dirname, 'public')));

中缺少文件夹的路径

答案 1 :(得分:0)

问题在于您如何安装express.static中间件。在您的示例中,您将其安装到应用程序的根目录。

因此,在您的示例中,您应该能够从/public访问http://localhost:3000/目录的内容。

因此,您只需要为express.static中间件指定一个挂载点:

app.use('public', express.static(path.join(__dirname, 'public')));

您还应该记住express.static没有默认索引页面。因此,如果您的index.html目录中没有public,那么您无论如何都会得到404(express.static不会像apache那样列出您的文件。