【发布时间】:2019-07-03 13:06:20
【问题描述】:
我已设置 express.static 在我的网站上提供静态资产。我在同一个目录中有 CSS、JS 和图像。 CSS 和 JS 正确提供,但图像不正确。
在localhost 上,图像返回200 响应,但没有图像。
在生产中,他们返回 302 并且没有图像。
我的项目目录如下所示:
|- app.js - Main server file
|
|
|- client - All user facing files
|
|- admin - Admin front end
| |_ assets - Stores CSS, JS and images
|
|_ theme - Website front end
|_ assets - Stores CSS, JS and images
我用来为app.js 文件中的静态文件提供服务的代码是:
app.use('/admin/assets', express.static(`${__dirname}/client/admin/assets`));
app.use('/assets', express.static(`${__dirname}/client/theme/assets`));
我也试过了:
app.use('/admin/assets', express.static(path.join(__dirname, `client/admin/assets`)));
app.use('/assets', express.static(path.join(__dirname, `client/theme/assets`)));
在前端,我使用以下标记来尝试渲染图像:
<img src="/assets/avatar.png">
我无法弄清楚为什么这个或任何其他图像不起作用,但 js 和 css 可以。作为参考,以下标记成功呈现了 JS:
<script defer="defer" src="/assets/index.bundle.js"></script>
【问题讨论】:
-
如果您在浏览器中打开它会怎样?你得到404吗?
http://yourhost:yourport/assets/avatar.png -
@GrafiCode 我得到
304 Not Modified -
您确定 png 图像没有损坏吗?我的意思是,如果你在不同的图像上尝试它,也许是 jpeg,结果总是一样吗?
-
非常感谢,它已损坏。我构建了一个将文件上传到客户端目录的 cli。它显然不适用于图像。所以图像在主题仓库中,但是当它们被推送到项目文件夹时,它们就坏了。
-
祝你好运:)