node.js - 具有相对路径的本地文件未加载到 NodeJS Express 应用程序中

标签 node.js express static-files

我正在尝试使用 Express 和 Node.js 构建应用程序。我的服务器文件包含在 app 文件夹中,前端文件在 public 文件夹中。

我的文件结构是这样的:

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)

我该如何解决这个问题?

最佳答案

express.static中间件基于 serve-static ,并负责为 Express 应用程序的静态 Assets 提供服务。

工作原理:

  • 从应用程序目录中的“public”目录为应用程序提供静态内容

    //GET/style.css 等

    app.use(express.static(__dirname + '/public'));

  • 将中间件挂载到“/static”以仅在其请求路径以“/static”为前缀时提供静态内容

    //GET/static/style.css 等

    app.use('/static', express.static(__dirname + '/public'));

  • 从多个目录提供静态文件,但优先考虑“./public”

    app.use(express.static(__dirname + '/public'));

    app.use(express.static(__dirname + '/files'));

    app.use(express.static(__dirname + '/uploads'));

关于node.js - 具有相对路径的本地文件未加载到 NodeJS Express 应用程序中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28431003/

相关文章:

javascript - 在 Node.js 中循环使用 findOne 需要太长时间

Node.js ExpressJS 模式匹配不等于

arrays - Mongodb $pull 与 async/await 无法正常工作

node.js - TypeError : schematype.castForQueryWrapper不是一个函数

Node.js/Express 使变量在所有路由的布局中可用

django - Django1.4中的静态文件管理

static-files - 自定义静态文件夹的 flask 蓝图在使用url_for的模板中不起作用

javascript - 如何用动态数组制作随机百分比?

node.js - JWT 身份验证 - 防止 JWT token 被盗

python - flask html js css img 引用 404 错误