首页 > 解决方案 > 静态文件未在生产中提供| 从任何文件夹

问题描述

当刚刚在我的本地主机上运行时,正在提供静态文件,但是,当部署到生产环境时,图像丢失了。

即使我测试将 png 图像部署到基本目录,该图像仍然在生产中丢失。所以不确定这是否只是代码配置的方式,或者是什么......丢失了

我得到图像的 200 状态,并且内容类型也与标题类型匹配

文件夹结构如下

Base Directory > public > icons

Base Directory > public > css > spreadsheet.css

Base directory > index.js

我的后端快递文件的相关部分如下:

const express = require('express')

const app = require('express')();

const { join } = require("path");
app.set('views', join(__dirname, 'views'));
app.use(express.static(join(__dirname, 'public')));

const port = 3000

var cookieParser = require('cookie-parser')
app.use(cookieParser())

const bodyParser = require('body-parser');
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }))
app.use(cookieParser());


app.set('view engine', 'ejs');

ejs模板的相关部分:

<img class="image"  src="/icons/<%= count.icon %> " width="25" height="25"  />

有没有人经历过静态文件没有在产品中提供,尽管它们在哪个文件夹中?我觉得奇怪的是我的 CSS 正在我的公共文件夹中呈现,但图标却没有。

我正在通过 docker 映像进行部署,所以这也可能是 docker 问题吗?

docker镜像副本

FROM node:14.15.4-buster-slim@sha256:c8b73b9968457ee4969050955031efe0943d7770e38eeec2943debefd4d28cfd
RUN  apt-get update \
     && apt-get install -y wget gnupg ca-certificates \
     && wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add - \
     && sh -c 'echo "deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google.list' \
     && apt-get update \

& apt-get install -y google-chrome-stable \
     && rm -rf /var/lib/apt/lists/* \
     && wget --quiet https://raw.githubusercontent.com/vishnubob/wait-for-it/master/wait-for-it.sh -O /usr/sbin/wait-for-it.sh \
     && chmod +x /usr/sbin/wait-for-it.sh
ENV NODE_ENV="docker"

WORKDIR /


ADD ["package.json", "package-lock.json*", "./"]
RUN npm install


COPY . .

EXPOSE 3000
CMD [ "node", "index.js" ]

标签: node.jsdockerexpress

解决方案


推荐阅读