Как развернуть express приложение на Vercel, если оно находится не в корне, а в подпапке?

У меня нет проблем с развертыванием, если приложение находится в корне, но если его перенести в папку например node и развернуть его вот так, то я получаю от Vercel 404 Error: ENOENT: no such file or directory, stat '/var/task/public/pages/index/index.html'

Vercel.json

{
    "version": 2,
    "builds": [ {"src": "index.js", "use": "@vercel/node"} ],
    "rewrites": [ {"source": "/", "destination": "index.js"} ]
}

Index.js

import express from "express";
import { resolve } from "path";
import { router } from "./src/routes/index.route.js";

const app = express();
const port = 3000;

app.use(express.static(resolve(resolve("public"))));
app.use(router);

app.listen(port, () => {
    console.log(`Server is running on ${port}`);
});

Index.routes.js

import { Router } from "express";
import { resolve } from "path";

const router = Router();
const __dirname = resolve();

router.get("/", (req, res) => {
    res.sendFile(resolve(__dirname, "public", "pages", "index", "index.html"));
});

export { router };

Structure of my folders

.git
node/
    node_modules/
    public/
      pages/
        index/
            index.html
    src/
      routes/
        index.route.js
    index.js
    package.json
    vercel.json

Также я конфигурировал свой vercel.json вот так

{
    "version": 2,
    "builds": [ 
      {"src": "index.js", "use": "@vercel/node"},
      {"src": "public/**", "use": "@vercel/static"} <-----
    ],
    "rewrites": [ {"source": "/", "destination": "index.js"} ]
}

После этого в папке Output появлялась папка public с моими статическими файлами, но все равно Vercel не видел мой index.html.

Также, согласно документации, я прописывал Root Directory в настройках моего проект, в данном случае это node.

Я думаю что проблема в том что app.use(express.static(resolve(resolve("public")))); как то неправильно определяет путь к стат файлам, ну или проблема в index.route.js, где я указываю пути к файлам.

Подскажите что не так, если кто-то сталкивался с такой проблемой?


Ответы (0 шт):