Как развернуть 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, где я указываю пути к файлам.
Подскажите что не так, если кто-то сталкивался с такой проблемой?