"ReferenceError: window is not defined" error while depoling to vercel.
slonikmak opened this issue · 2 comments
slonikmak commented
When I deploy to vercel I get an error "ReferenceError: window is not defined".
next-translate - compiled page: /blog/[...slug] - locale: en - namespaces: content - used loader: getStaticProps
--
23:00:14.541 | next-translate - compiled page: /docs/[...slug] - locale: en - namespaces: content - used loader: getStaticProps
23:00:14.553 | ReferenceError: window is not defined
23:00:14.553 | at getFullRedirectUrl (/vercel/path0/.next/server/chunks/392.js:78:40)
23:00:14.554 | at ContentMeta (/vercel/path0/.next/server/chunks/392.js:54:115)
23:00:14.554 | at Wc (/vercel/path0/node_modules/react-dom/cjs/react-dom-server.browser.production.min.js:68:44)
23:00:14.554 | at Zc (/vercel/path0/node_modules/react-dom/cjs/react-dom-server.browser.production.min.js:70:253)
23:00:14.555 | at Z (/vercel/path0/node_modules/react-dom/cjs/react-dom-server.browser.production.min.js:76:89)
23:00:14.555 | at $c (/vercel/path0/node_modules/react-dom/cjs/react-dom-server.browser.production.min.js:78:98)
23:00:14.562 | at bd (/vercel/path0/node_modules/react-dom/cjs/react-dom-server.browser.production.min.js:77:404)
23:00:14.562 | at Z (/vercel/path0/node_modules/react-dom/cjs/react-dom-server.browser.production.min.js:76:217)
23:00:14.562 | at $c (/vercel/path0/node_modules/react-dom/cjs/react-dom-server.browser.production.min.js:78:98)
23:00:14.562 | at Zc (/vercel/path0/node_modules/react-dom/cjs/react-dom-server.browser.production.min.js:71:145)
It works fine on the my local machine.
tiniscule commented
This seems to be because of some changes to Vercel's env vars, where they no longer populate a URL one. You can update get-full-redirect-url.ts
to use the following as a fix, just confirmed it works for me:
export default function getFullRedirectUrl(redirectPath: string) {
if (redirectPath.startsWith("http")) return redirectPath;
const baseUrl =
process.env.URL || process.env.VERCEL_URL || window.location.origin;
return [baseUrl, redirectPath?.replace(/^\//, "")].filter(Boolean).join("/");
}
I'll get a PR going for the template.
tiniscule commented
This has bee resolved in the legacy repo - I'll be working on a simpler starter kit for Next shortly