chore(debug): envs in edge functions

This commit is contained in:
Michael Zetterberg
2024-05-22 11:49:46 +02:00
parent abef0d9129
commit 13575376b1
15 changed files with 202 additions and 34 deletions

3
.env
View File

@@ -1,3 +1,4 @@
# See update-dotenv.mjs
PUBLIC_URL="REPLACED-ON-NETLIFY-BUILD"
AUTH_URL="REPLACE-ON-NETLIFY-BUILD"
NEXTAUTH_URL="REPLACE-ON-NETLIFY-BUILD"
PUBLIC_URL="REPLACED-ON-NETLIFY-BUILD"

View File

@@ -0,0 +1,38 @@
import { NextResponse } from "next/server"
import { env } from "@/env/server"
import type { NextRequest } from "next/server"
export async function GET(request: NextRequest) {
const e = process.env
console.log({ process_env: process.env })
const urlVar = "PUBLIC_URL"
const nextAuthUrlVar = "NEXTAUTH_URL"
const nextAuthUrlVar2 = "AUTH_URL"
const envTestVar = "ENVTEST"
const values = {
env_url: env.PUBLIC_URL,
static_url: process.env.PUBLIC_URL,
dynamic_url: e[urlVar],
env_envtest: env.ENVTEST,
static_envtest: process.env.ENVTEST,
dynamic_envtest: e[envTestVar],
env_nextauth: env.NEXTAUTH_URL,
static_nextauth: process.env.NEXTAUTH_URL,
dynamic_nextauth: e[nextAuthUrlVar],
env_nextauth2: env.AUTH_URL,
static_nextauth2: process.env.AUTH_URL,
dynamic_nextauth2: e[nextAuthUrlVar2],
}
console.log(values)
return NextResponse.json(values)
}
export const dynamic = "force-dynamic"
export const runtime = "edge"

View File

@@ -0,0 +1,40 @@
import "dotenv/config"
import { NextResponse } from "next/server"
import { env } from "@/env/server"
import type { NextRequest } from "next/server"
export async function GET(request: NextRequest) {
const e = process.env
console.log({ process_env: process.env })
const urlVar = "PUBLC_URL"
const nextAuthUrlVar = "NEXTAUTH_URL"
const nextAuthUrlVar2 = "AUTH_URL"
const envTestVar = "ENVTEST"
const values = {
env_url: env.PUBLIC_URL,
static_url: process.env.PUBLIC_URL,
dynamic_url: e[urlVar],
env_envtest: env.ENVTEST,
static_envtest: process.env.ENVTEST,
dynamic_envtest: e[envTestVar],
env_nextauth: env.NEXTAUTH_URL,
static_nextauth: process.env.NEXTAUTH_URL,
dynamic_nextauth: e[nextAuthUrlVar],
env_nextauth2: env.AUTH_URL,
static_nextauth2: process.env.AUTH_URL,
dynamic_nextauth2: e[nextAuthUrlVar2],
}
console.log(values)
return NextResponse.json(values)
}
export const dynamic = "force-dynamic"
export const runtime = "edge"

View File

@@ -0,0 +1,41 @@
import { config } from "dotenv"
import { NextResponse } from "next/server"
import { env } from "@/env/server"
import type { NextRequest } from "next/server"
config({ path: "./.env" })
export async function GET(request: NextRequest) {
const e = process.env
console.log({ process_env: process.env })
const urlVar = "PUBLIC_URL"
const nextAuthUrlVar = "NEXTAUTH_URL"
const nextAuthUrlVar2 = "AUTH_URL"
const envTestVar = "ENVTEST"
const values = {
env_url: env.PUBLIC_URL,
static_url: process.env.PUBLIC_URL,
dynamic_url: e[urlVar],
env_envtest: env.ENVTEST,
static_envtest: process.env.ENVTEST,
dynamic_envtest: e[envTestVar],
env_nextauth: env.NEXTAUTH_URL,
static_nextauth: process.env.NEXTAUTH_URL,
dynamic_nextauth: e[nextAuthUrlVar],
env_nextauth2: env.AUTH_URL,
static_nextauth2: process.env.AUTH_URL,
dynamic_nextauth2: e[nextAuthUrlVar2],
}
console.log(values)
return NextResponse.json(values)
}
export const dynamic = "force-dynamic"
export const runtime = "edge"

View File

@@ -13,7 +13,7 @@ export async function GET(request: NextRequest) {
const urlVar = "PUBLIC_URL"
const nextAuthUrlVar = "NEXTAUTH_URL"
const nextAuthUrlVar2 = "NEXTAUTH_URL2"
const nextAuthUrlVar2 = "AUTH_URL"
const envTestVar = "ENVTEST"
const values = {
@@ -26,8 +26,8 @@ export async function GET(request: NextRequest) {
env_nextauth: env.NEXTAUTH_URL,
static_nextauth: process.env.NEXTAUTH_URL,
dynamic_nextauth: e[nextAuthUrlVar],
env_nextauth2: env.NEXTAUTH_URL2,
static_nextauth2: process.env.NEXTAUTH_URL2,
env_nextauth2: env.AUTH_URL,
static_nextauth2: process.env.AUTH_URL,
dynamic_nextauth2: e[nextAuthUrlVar2],
}

View File

@@ -12,7 +12,7 @@ export async function GET(request: NextRequest) {
const urlVar = "PUBLC_URL"
const nextAuthUrlVar = "NEXTAUTH_URL"
const nextAuthUrlVar2 = "NEXTAUTH_URL2"
const nextAuthUrlVar2 = "AUTH_URL"
const envTestVar = "ENVTEST"
const values = {
@@ -25,8 +25,8 @@ export async function GET(request: NextRequest) {
env_nextauth: env.NEXTAUTH_URL,
static_nextauth: process.env.NEXTAUTH_URL,
dynamic_nextauth: e[nextAuthUrlVar],
env_nextauth2: env.NEXTAUTH_URL2,
static_nextauth2: process.env.NEXTAUTH_URL2,
env_nextauth2: env.AUTH_URL,
static_nextauth2: process.env.AUTH_URL,
dynamic_nextauth2: e[nextAuthUrlVar2],
}

View File

@@ -0,0 +1,41 @@
import { config } from "dotenv"
import { NextResponse } from "next/server"
import { env } from "@/env/server"
import type { NextRequest } from "next/server"
config({ debug: true, override: true })
export async function GET(request: NextRequest) {
const e = process.env
console.log({ process_env: process.env })
const urlVar = "PUBLC_URL"
const nextAuthUrlVar = "NEXTAUTH_URL"
const nextAuthUrlVar2 = "AUTH_URL"
const envTestVar = "ENVTEST"
const values = {
env_url: env.PUBLIC_URL,
static_url: process.env.PUBLIC_URL,
dynamic_url: e[urlVar],
env_envtest: env.ENVTEST,
static_envtest: process.env.ENVTEST,
dynamic_envtest: e[envTestVar],
env_nextauth: env.NEXTAUTH_URL,
static_nextauth: process.env.NEXTAUTH_URL,
dynamic_nextauth: e[nextAuthUrlVar],
env_nextauth2: env.AUTH_URL,
static_nextauth2: process.env.AUTH_URL,
dynamic_nextauth2: e[nextAuthUrlVar2],
}
console.log(values)
return NextResponse.json(values)
}
export const dynamic = "force-dynamic"
export const runtime = "edge"

View File

@@ -13,7 +13,7 @@ export async function GET(request: NextRequest) {
const urlVar = "PUBLC_URL"
const nextAuthUrlVar = "NEXTAUTH_URL"
const nextAuthUrlVar2 = "NEXTAUTH_URL2"
const nextAuthUrlVar2 = "AUTH_URL"
const envTestVar = "ENVTEST"
const values = {
@@ -26,8 +26,8 @@ export async function GET(request: NextRequest) {
env_nextauth: env.NEXTAUTH_URL,
static_nextauth: process.env.NEXTAUTH_URL,
dynamic_nextauth: e[nextAuthUrlVar],
env_nextauth2: env.NEXTAUTH_URL2,
static_nextauth2: process.env.NEXTAUTH_URL2,
env_nextauth2: env.AUTH_URL,
static_nextauth2: process.env.AUTH_URL,
dynamic_nextauth2: e[nextAuthUrlVar2],
}

View File

@@ -10,7 +10,7 @@ export async function GET(request: NextRequest) {
const urlVar = "PUBLIC_URL"
const nextAuthUrlVar = "NEXTAUTH_URL"
const nextAuthUrlVar2 = "NEXTAUTH_URL2"
const nextAuthUrlVar2 = "AUTH_URL"
const envTestVar = "ENVTEST"
const values = {
@@ -23,8 +23,8 @@ export async function GET(request: NextRequest) {
env_nextauth: env.NEXTAUTH_URL,
static_nextauth: process.env.NEXTAUTH_URL,
dynamic_nextauth: e[nextAuthUrlVar],
env_nextauth2: env.NEXTAUTH_URL2,
static_nextauth2: process.env.NEXTAUTH_URL2,
env_nextauth2: env.AUTH_URL,
static_nextauth2: process.env.AUTH_URL,
dynamic_nextauth2: e[nextAuthUrlVar2],
}

View File

@@ -13,7 +13,7 @@ export async function GET(request: NextRequest) {
const urlVar = "PUBLIC_URL"
const nextAuthUrlVar = "NEXTAUTH_URL"
const nextAuthUrlVar2 = "NEXTAUTH_URL2"
const nextAuthUrlVar2 = "AUTH_URL"
const envTestVar = "ENVTEST"
const values = {
@@ -26,8 +26,8 @@ export async function GET(request: NextRequest) {
env_nextauth: env.NEXTAUTH_URL,
static_nextauth: process.env.NEXTAUTH_URL,
dynamic_nextauth: e[nextAuthUrlVar],
env_nextauth2: env.NEXTAUTH_URL2,
static_nextauth2: process.env.NEXTAUTH_URL2,
env_nextauth2: env.AUTH_URL,
static_nextauth2: process.env.AUTH_URL,
dynamic_nextauth2: e[nextAuthUrlVar2],
}

View File

@@ -12,7 +12,7 @@ export async function GET(request: NextRequest) {
const urlVar = "PUBLIC_URL"
const nextAuthUrlVar = "NEXTAUTH_URL"
const nextAuthUrlVar2 = "NEXTAUTH_URL2"
const nextAuthUrlVar2 = "AUTH_URL"
const envTestVar = "ENVTEST"
const values = {
@@ -25,8 +25,8 @@ export async function GET(request: NextRequest) {
env_nextauth: env.NEXTAUTH_URL,
static_nextauth: process.env.NEXTAUTH_URL,
dynamic_nextauth: e[nextAuthUrlVar],
env_nextauth2: env.NEXTAUTH_URL2,
static_nextauth2: process.env.NEXTAUTH_URL2,
env_nextauth2: env.AUTH_URL,
static_nextauth2: process.env.AUTH_URL,
dynamic_nextauth2: e[nextAuthUrlVar2],
}

View File

@@ -13,7 +13,7 @@ export async function GET(request: NextRequest) {
const urlVar = "PUBLIC_URL"
const nextAuthUrlVar = "NEXTAUTH_URL"
const nextAuthUrlVar2 = "NEXTAUTH_URL2"
const nextAuthUrlVar2 = "AUTH_URL"
const envTestVar = "ENVTEST"
const values = {
@@ -26,8 +26,8 @@ export async function GET(request: NextRequest) {
env_nextauth: env.NEXTAUTH_URL,
static_nextauth: process.env.NEXTAUTH_URL,
dynamic_nextauth: e[nextAuthUrlVar],
env_nextauth2: env.NEXTAUTH_URL2,
static_nextauth2: process.env.NEXTAUTH_URL2,
env_nextauth2: env.AUTH_URL,
static_nextauth2: process.env.AUTH_URL,
dynamic_nextauth2: e[nextAuthUrlVar2],
}

View File

@@ -10,7 +10,7 @@ export async function GET(request: NextRequest) {
const urlVar = "PUBLIC_URL"
const nextAuthUrlVar = "NEXTAUTH_URL"
const nextAuthUrlVar2 = "NEXTAUTH_URL2"
const nextAuthUrlVar2 = "AUTH_URL"
const envTestVar = "ENVTEST"
const values = {
@@ -23,8 +23,8 @@ export async function GET(request: NextRequest) {
env_nextauth: env.NEXTAUTH_URL,
static_nextauth: process.env.NEXTAUTH_URL,
dynamic_nextauth: e[nextAuthUrlVar],
env_nextauth2: env.NEXTAUTH_URL2,
static_nextauth2: process.env.NEXTAUTH_URL2,
env_nextauth2: env.AUTH_URL,
static_nextauth2: process.env.AUTH_URL,
dynamic_nextauth2: e[nextAuthUrlVar2],
}

4
env/server.ts vendored
View File

@@ -33,7 +33,7 @@ export const env = createEnv({
NEXTAUTH_REDIRECT_PROXY_URL: z.string().optional(),
NEXTAUTH_SECRET: z.string(),
NEXTAUTH_URL: z.string().optional(),
NEXTAUTH_URL2: z.string().optional(),
AUTH_URL: z.string().optional(),
NODE_ENV: z.enum(["development", "test", "production"]),
PRINT_QUERY: z
.string()
@@ -71,7 +71,7 @@ export const env = createEnv({
NEXTAUTH_REDIRECT_PROXY_URL: process.env.NEXTAUTH_REDIRECT_PROXY_URL,
NEXTAUTH_SECRET: process.env.NEXTAUTH_SECRET,
NEXTAUTH_URL: process.env.NEXTAUTH_URL,
NEXTAUTH_URL2: process.env.NEXTAUTH_URL2,
AUTH_URL: process.env.AUTH_URL,
NODE_ENV: process.env.NODE_ENV,
PRINT_QUERY: process.env.PRINT_QUERY,
PUBLIC_URL: process.env.PUBLIC_URL,

View File

@@ -29,7 +29,9 @@
* any other environment (branch deploys and deploy previews) we use the
* predefined Netlify environment variable DEPLOY_PRIME_URL.
*
* NEXTAUTH_URL is set to point to the PUBLIC_URL.
* Both AUTH_URL and NEXTAUTH_URL is set to point to the PUBLIC_URL.
* We set both as a precaution as next-auth v5 is transitioning to AUTH_* but we
* have seen several occurences in the auth.js codebase that are not using both.
*/
import fs from "node:fs"
@@ -50,15 +52,20 @@ if (process.env.NETLIFY) {
PUBLIC_URL = process.env.DEPLOY_PRIME_URL
}
const NEXTAUTH_URL = `${PUBLIC_URL}/api/web/auth`
const AUTH_URL = `${PUBLIC_URL}/api/web/auth`
const NEXTAUTH_URL = AUTH_URL
const replaceMap = {
AUTH_URL,
NEXTAUTH_URL,
PUBLIC_URL,
}
let contents = fs.readFileSync("./.env", { encoding: "utf-8" })
contents = contents.replace(/PUBLIC_URL=.*/, `PUBLIC_URL="${PUBLIC_URL}"`)
contents = contents.replace(
/NEXTAUTH_URL=.*/,
`NEXTAUTH_URL="${NEXTAUTH_URL}"`
)
for (const [key, value] of Object.entries(replaceMap)) {
contents = contents.replace(new RegExp(`${key}=.*`), `${key}="${value}"`)
}
fs.writeFileSync("./.env", contents, { encoding: "utf-8" })
}