我试图在Express和Node.js中构建应用程序。我的服务器文件包含在app
文件夹中,前端内容位于公共文件夹中。
我的文件结构如下:
my_project
|- app
| |-(server stuff)
| |- ....
|- public
| |- modules
| | |- core
| | | |- index.html
| | | |- style
| | | | |style.css
| | | | |sidebar.css
| | | |- img
| | | | |- faceicon.png
| | | | |- main.png
| | | |- js
| | | | |main.js
| | | | |sidebar.js
| | |- articles
| | | |- ....
问题在我的index.html
文件中,当我引用像
<link href="style/style.css" rel="stylesheet">
或在我的style.css
中
background: url(../img/faceicon.jpg) no-repeat bottom center scroll;
预期结果不会显示在屏幕上,我会收到控制台消息,如
GET http://localhost:3000/img/faceicon.png 500 (Internal Server Error)
我该如何解决这个问题?
答案 0 :(得分:3)
express.static中间件基于serve-static,负责提供Express应用程序的静态资产。
工作原理:
为&#34; public&#34;提供应用的静态内容应用程序目录中的目录
// GET /style.css等
app.use(express.static(__ dirname +&#39; / public&#39;));
将中间件安装在&#34; / static&#34;仅在其请求路径以&#34; / static&#34;
作为前缀时才提供静态内容// GET /static/style.css等。
app.use(&#39; / static&#39;,express.static(__ dirname +&#39; / public&#39;));
提供来自多个目录的静态文件,但优先考虑&#34; ./ public&#34;超过其他人
app.use(express.static(__ dirname +&#39; / public&#39;));
app.use(express.static(__ dirname +&#39; / files&#39;));
app.use(express.static(__ dirname +&#39; / uploads&#39;));