express.js静态不识别已定义的公共'夹

时间:2016-06-17 14:26:45

标签: javascript node.js express

我有以下目录设置;

**app** **controllers** *index.server.controller.js* **models** **routes** *index.server.routes.js* **views** *index.ejs* **config** **env** *config.js* *express.js* **public** **css** **img** *logo.jpg* **js** *server.js* *package.json*

在express.js中,我使用以下内容加载静态目录;

//app.use(express.static(__dirname + '\\..\\public\\') - also attempted
app.use(express.static('./public'));

然后我提供index.ejs,其中包含以下代码段;

<img src="img/logo.jpg" alt="Logo"/>

但是,这总是会导致图像本身返回404。

C:\nodejs>node horizontal/server Localhost running on port 3000 GET / 304 13.763 ms - - GET /img/logo.jpg 404 4.372 ms - 25

如上所示,我试图给出一个严格的__dirname路径(就像我设置视图路径一样,如下所示) - 并尝试插入public / img / logo.jpg为了让它得到满足。

观点,因为它有效;

app.set('views', __dirname+'\\..\\\\app\\views\\'); app.set('view engine', 'ejs');

有人想知道为什么表示不查看公用文件夹或提供静态内容吗?

请注意,我的Dev env是Windows8.1。

1 个答案:

答案 0 :(得分:0)

您应该使用路径模块来执行此操作。

var path = require('path');

app目录如下所示

enter image description here

您只需访问公共文件夹,如下所示:

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

希望有所帮助!