Привет, у меня есть репозиторий для тестирования. В localhost я могу видеть, когда я выполняю npm run dev, мой пользовательский сервер .... server.js в корневом каталоге выполняет перенаправление, если существует мой пользовательский файл cookie. Но в производстве в Vercel я не вижу, что этот настраиваемый сервер работает (я вижу, потому что в Server.js я добавляю файл cookie сеанса с именем n-session со значением 1, но в производстве не работает (также журналы в Server.js не не отображать эту трассировку в Server.js).
В моем package.json я вижу:
"scripts": {
"dev": "node server.js",
"build": "next build",
"start": "NODE_ENV=production node server.js",
"export": "next export",
},
У моего server.js есть этот код:
// server.js
const { createServer } = require('http')
const { parse } = require('url')
const next = require('next')
const app = next({})
const handle = app.getRequestHandler()
var Cookies = require('cookies');
const { localeLanguages } = require('next/config').default().publicRuntimeConfig;
app.prepare().then(() => {
createServer((req, res) => {
// Be sure to pass `true` as the second argument to `url.parse`.
// This tells it to parse the query portion of the URL.
const parsedUrl = parse(req.url, true);
const { pathname } = parsedUrl;
console.log("pathname", pathname)
if (pathname === '/') {
console.log("pathname is root..................")
const mainLang = process.env.NEXT_PUBLIC_MAIN_LANG;
let uriRedirect = null;
if (req && req.headers)
{
console.log("req.headers", req.headers)
const cookies = new Cookies(req, res);
let userLang = mainLang;
let userLangCookie = cookies.get(process.env.NEXT_PUBLIC_USER_LANGUAGE_COOKIE);
let initSession = cookies.get(process.env.NEXT_PUBLIC_INIT_SESION_COOKIE);
console.log("userLangCookie", userLangCookie)
console.log("initSession", initSession)
let acceptLanguage = req.headers['accept-language'];
if (acceptLanguage) {
acceptLanguage = (acceptLanguage.split(',')[0]).split('-')[0];
let found = localeLanguages.filter(function (e) {
return e.label == acceptLanguage;
});
if (found.length > 0) {
userLang = acceptLanguage;
}
if (typeof initSession === "undefined" || initSession === null)
{
if (typeof userLangCookie === "undefined" ||
userLangCookie === null && userLang !== mainLang)
{
uriRedirect = `/${userLang}`;
}
else if (userLangCookie !== mainLang)
{
uriRedirect = `/${userLangCookie}`;
}
cookies.set(process.env.NEXT_PUBLIC_INIT_SESION_COOKIE, 1, {
httpOnly: true // true by default
})
}
}
}
console.log("uriRedirect", uriRedirect)
if (uriRedirect !== null) {
res.writeHead(302, { Location: `${uriRedirect}` }).end();
} else {
handle(req, res, parsedUrl);
}
} else {
handle(req, res, parsedUrl);
}
}).listen(3000, (err) => {
if (err) throw err
console.log('> Ready on http://localhost:3000')
})
})
Я загружаю в Vercel, используя свой репозиторий github с командами git add / commit / push
Мой репозиторий: https://github.com/anialamo/nootric-next10
Не могли бы вы мне помочь? Что не так в моем развертывании?
Где должен быть размещен мой файл server.js? также в Vercel? Большое спасибо!