Проблема с получением статических файлов в Vercel
Я уже неделю ломаю голову, почему у меня такая проблема. У меня есть клиентская часть (React) и серверная часть (Express) моего сайта. При публикации моей серверной части на Vercel у меня все работает нормально, авторизация работает, новости загружаются. Но не работает только получение статических файлов по пути (пример) https://my-site.vercel.app/uploads/image.png. И я не понимаю, почему, потому что все остальное работает хорошо.
Мой index.js файл:
import multer from "multer";
import express from "express";
import mongoose from "mongoose";
import cors from "cors";
import {
registerValidation,
loginValidation,
postValidation,
} from "./validations.js";
import { checkAuth, handleValidationErrors } from "./utils/index.js";
import { UserController, PostController } from "./Controllers/index.js";
mongoose
.connect(
"mongodb+srv://catosrak:******[email protected]/?retryWrites=true&w=majority&appName=test"
)
.then(() => console.log("DB ok"))
.catch((err) => console.log("DB error", err));
const app = express();
const storage = multer.diskStorage({
destination: (_, __, cb) => {
cb(null, "uploads");
},
filename: (_, file, cb) => {
cb(null, file.originalname);
},
});
const upload = multer({
storage,
});
app.use(express.json());
app.use(
cors({
origin: "http://new.i-m-z.ru",
})
);
app.use("/uploads", express.static("uploads"));
app.post(
"/auth/register",
registerValidation,
handleValidationErrors,
UserController.register
);
app.post(
"/auth/login",
loginValidation,
handleValidationErrors,
UserController.login
);
app.get(
"/auth/authme",
checkAuth,
handleValidationErrors,
UserController.authme
);
app.get("/posts/", PostController.getAll);
app.get("/posts/:id", checkAuth, PostController.getOne);
app.post("/posts/", checkAuth, postValidation, PostController.createPost);
app.delete("/posts/:id", checkAuth, PostController.removePost);
app.patch("/posts/:id", checkAuth, postValidation, PostController.updatePost);
app.post("/upload", upload.single("image"), (req, res) => {
res.json({
url: `uploads/${req.file.originalname}`,
});
});
app.listen(3131, function () {
console.log("Server OK");
});
Мой vercel.json файл:
{
"version": 2,
"builds": [
{
"src": "./index.js",
"use": "@vercel/node"
}
],
"routes": [
{
"src": "/(.*)",
"dest": "/"
}
]
}
Я попытался изменить vercel.json, попытался загрузить проект с помощью интерфейса командной строки или просто импортировать проект из github.com. Но это не сработало. При попытке перейти по пути https://my-site.vercel.app/uploads/image.png Я получаю сообщение об ошибке 404 NOT FOUND . Хотя, если я разверну свой проект на своем компьютере по пути localhost:3131/uploads/image.png, я получу это изображение. В чем может быть проблема, я все еще не понимаю