hi. my site is https://careerpilot20.netlify.app/
in this, i should be able to upload my cv which will be ingested + chunked. then, there’s assistant job search blah blah. the problem is everything works on localhost. but the functions seem to disappear from the live site. for example-
this worked perfectly on local but now its not found???
there’s the function only-next.js server handler there’s supposed to be a lot more(19 probably).
deploy log:
2:26:04 AM: Waiting for other deploys from your team to complete. Check the queue: Netlify
2:26:13 AM: build-image version: ac6eb13fbf000e5c09ad677efd8b7c3c2d0142b6 (noble-new-builds)
2:26:13 AM: buildbot version: d2b848b3f2d90a2e87635b1ad01adcf82666d2d6
2:26:14 AM: Building with cache
2:26:14 AM: Starting to prepare the repo for build
2:26:14 AM: Preparing Git Reference refs/heads/main
2:26:16 AM: Installing dependencies
2:26:16 AM: mise ~/.config/mise/config.toml tools: python@3.14.3
2:26:16 AM: mise ~/.config/mise/config.toml tools: ruby@3.4.8
2:26:16 AM: mise ~/.config/mise/config.toml tools: go@1.26.2
2:26:16 AM: v20.20.2 is already installed.
2:26:17 AM: Now using node v20.20.2 (npm v10.8.2)
2:26:17 AM: Enabling Node.js Corepack
2:26:17 AM: No npm workspaces detected
2:26:17 AM: Installing npm packages using npm version 10.8.2
2:26:18 AM: up to date in 948ms
2:26:18 AM: npm packages installed
2:26:18 AM: Successfully installed dependencies
2:26:18 AM: Detected 1 framework(s)
2:26:18 AM: “next” at version “15.5.19”
2:26:18 AM: Starting build script
2:26:19 AM: Section completed: initializing
2:26:21 AM:
2:26:21 AM: Netlify Build
2:26:21 AM: ────────────────────────────────────────────────────────────────
2:26:21 AM:
2:26:21 AM: ❯ Version
2:26:21 AM: @netlify/build 35.14.0
2:26:21 AM:
2:26:21 AM: ❯ Flags
2:26:21 AM: accountId: 6a22f7c07c32683a3649a4a0
2:26:21 AM: baseRelDir: true
2:26:21 AM: buildId: 6a25d3dce215050008db7724
2:26:21 AM: deployId: 6a25d3dce215050008db7726
2:26:21 AM:
2:26:21 AM: ❯ Current directory
2:26:21 AM: /opt/build/repo
2:26:21 AM:
2:26:21 AM: ❯ Config file
2:26:21 AM: /opt/build/repo/netlify.toml
2:26:21 AM:
2:26:21 AM: ❯ Context
2:26:21 AM: production
2:26:21 AM:
2:26:21 AM: ❯ Using Next.js Runtime - v5.15.11
2:26:24 AM: Next.js cache restored
2:26:24 AM:
2:26:24 AM: build.command from netlify.toml
2:26:24 AM: ────────────────────────────────────────────────────────────────
2:26:24 AM:
2:26:24 AM: $ next build
2:26:26 AM: ▲ Next.js 15.5.19
2:26:26 AM: Creating an optimized production build …
2:26:36 AM:Compiled with warnings in 9.3s
2:26:36 AM: ./lib/cv/parse.ts
2:26:36 AM: Critical dependency: the request of a dependency is an expression
2:26:36 AM: Import trace for requested module:
2:26:36 AM: ./lib/cv/parse.ts
2:26:36 AM: ./app/api/cv/upload/route.ts
2:26:36 AM: ./lib/cv/parse.ts
2:26:36 AM: Critical dependency: the request of a dependency is an expression
2:26:36 AM: Import trace for requested module:
2:26:36 AM: ./lib/cv/parse.ts
2:26:36 AM: ./app/api/cv/upload/route.ts
2:26:39 AM: [webpack.cache.PackFileCacheStrategy] Serializing big strings (207kiB) impacts deserialization performance (consider using Buffer instead and decode when needed)
2:26:45 AM: ✓ Compiled successfully in 16.4s
2:26:45 AM: Linting and checking validity of types …
2:26:50 AM: Collecting page data …
2:26:52 AM: Generating static pages (0/15) …
2:26:53 AM: Generating static pages (3/15)
2:26:53 AM: Generating static pages (7/15)
2:26:53 AM: Generating static pages (11/15)
2:26:53 AM: ✓ Generating static pages (15/15)
2:26:54 AM: Finalizing page optimization …
2:26:54 AM: Collecting build traces …
2:27:09 AM: Route (app) Size First Load JS
2:27:09 AM: ┌ ƒ / 66.7 kB 211 kB
2:27:09 AM: ├ ○ /_not-found 993 B 103 kB
2:27:09 AM: ├ ƒ /api/chat/threads 167 B 103 kB
2:27:09 AM: ├ ƒ /api/chat/threads/[id] 167 B 103 kB
2:27:09 AM: ├ ƒ /api/chat/threads/[id]/messages 167 B 103 kB
2:27:09 AM: ├ ƒ /api/cv/[id] 167 B 103 kB
2:27:09 AM: ├ ƒ /api/cv/[id]/chunks 167 B 103 kB
2:27:09 AM: ├ ƒ /api/cv/list 167 B 103 kB
2:27:09 AM: ├ ƒ /api/cv/upload 167 B 103 kB
2:27:09 AM: ├ ƒ /api/fit-score 167 B 103 kB
2:27:09 AM: ├ ƒ /api/goals 167 B 103 kB
2:27:09 AM: ├ ƒ /api/goals/[id] 167 B 103 kB
2:27:09 AM: ├ ƒ /api/health/ai 167 B 103 kB
2:27:09 AM: ├ ƒ /api/hunt 167 B 103 kB
2:27:09 AM: ├ ƒ /api/hunt/save 167 B 103 kB
2:27:09 AM: ├ ƒ /api/todos 167 B 103 kB
2:27:09 AM: ├ ƒ /api/todos/[id] 167 B 103 kB
2:27:09 AM: ├ ƒ /api/tracker/applications 167 B 103 kB
2:27:09 AM: ├ ƒ /api/tracker/applications/[id] 167 B 103 kB
2:27:09 AM: ├ ○ /calendar 2.74 kB 112 kB
2:27:09 AM: ├ ○ /chat 8.84 kB 119 kB
2:27:09 AM: ├ ○ /cv 5.03 kB 107 kB
2:27:09 AM: ├ ƒ /dashboard 167 B 103 kB
2:27:09 AM: ├ ○ /fit-score 3.45 kB 106 kB
2:27:09 AM: ├ ○ /hunter 6.5 kB 116 kB
2:27:09 AM: ├ ƒ /sign-in/[[…sign-in]] 164 B 106 kB
2:27:09 AM: ├ ƒ /sign-up/[[…sign-up]] 164 B 106 kB
2:27:09 AM: └ ○ /tracker 2.8 kB 112 kB
2:27:09 AM: + First Load JS shared by all 102 kB
2:27:09 AM: ├ chunks/255-98a0bdaa30757bda.js 46.2 kB
2:27:09 AM: ├ chunks/4bd1b696-c023c6e3521b1417.js 54.2 kB
2:27:09 AM: └ other shared chunks (total) 1.99 kB
2:27:09 AM: ƒ Middleware 88.9 kB
2:27:09 AM: ○ (Static) prerendered as static content
2:27:09 AM: ƒ (Dynamic) server-rendered on demand
2:27:09 AM:
2:27:09 AM: (build.command completed in 44.9s)
2:27:09 AM: Next.js cache saved
2:27:10 AM:
2:27:10 AM: Functions bundling
2:27:10 AM: ────────────────────────────────────────────────────────────────
2:27:10 AM:
2:27:10 AM: The Netlify Functions setting targets a non-existing directory: netlify/functions
2:27:10 AM:
2:27:10 AM: Packaging Functions from .netlify/functions-internal directory:
2:27:10 AM: - ___netlify-server-handler/___netlify-server-handler.mjs
2:27:10 AM:
2:27:12 AM:
2:27:12 AM: (Functions bundling completed in 1.6s)
2:27:12 AM:
2:27:12 AM: Edge Functions bundling
2:27:12 AM: ────────────────────────────────────────────────────────────────
2:27:12 AM:
2:27:12 AM: Packaging Edge Functions from .netlify/edge-functions directory:
2:27:12 AM: - ___netlify-edge-handler-middleware
2:27:13 AM:
2:27:13 AM: (Edge Functions bundling completed in 1.5s)
2:27:13 AM:
2:27:13 AM: Deploy site
2:27:13 AM: ────────────────────────────────────────────────────────────────
2:27:13 AM:
2:27:13 AM: Starting to deploy site from ‘.next’
2:27:13 AM: Calculating files to upload
2:27:14 AM: 8 new file(s) to upload
2:27:14 AM: 1 new function(s) to upload
2:27:21 AM: Starting post processing
2:27:21 AM: Skipping form detection
2:27:21 AM: Post processing - header rules
2:27:21 AM: Post processing - redirect rules
2:27:21 AM: Post processing done
2:27:21 AM: Section completed: postprocessing
2:27:23 AM: Site is live
2:27:21 AM: Section completed: deploying
2:27:23 AM: Finished waiting for live deploy in 2.047s
2:27:23 AM: Site deploy was successfully initiated
2:27:23 AM:
2:27:23 AM: (Deploy site completed in 9.9s)
2:27:29 AM:
2:27:29 AM: Netlify Build Complete
2:27:29 AM: ────────────────────────────────────────────────────────────────
2:27:29 AM:
2:27:29 AM: (Netlify Build completed in 1m 8.2s)
2:27:30 AM: Caching artifacts
2:27:30 AM: Section completed: building
2:27:34 AM: Uploading cache of size 139.9MB
2:27:35 AM: Section completed: cleanup
2:27:35 AM: Finished processing build request in 1m21.844s
thank you for reading. my hackathon ends tomorrow. help please. no function logs since there’s no function.
.oh the api directory seems empty.
netlify.toml:
CareerPilot — Netlify configuration
Why this file exists
--------------------
We deploy this app to Netlify (not Vercel). Without a
netlify.toml Netlify still builds the site, but the
Next.js plugin is not wired up and App Router API routes
(e.g. app/api/cv/upload/route.ts) are NOT deployed as
serverless functions — the request falls through to
Netlify’s static-asset handling and returns
<!DOCTYPE html>.... The client then surfaces this as
Unexpected token '<', "<!DOCTYPE "... is not valid JSON
on await res.json().
This file:
1. Registers the @netlify/plugin-nextjs plugin so
the App Router API routes get bundled and deployed
as Netlify Functions.
Blockquote
2. Pins Node 20 (required by pdf-parse@2 and
@google/generative-ai).
3. Disables Next.js telemetry at build time.
Required env vars (set in Netlify UI, NOT in this file):
- NEXT_PUBLIC_SUPABASE_URL
- SUPABASE_SERVICE_ROLE_KEY
- NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY
- CLERK_SECRET_KEY
- GEMINI_API_KEY
- TAVILY_API_KEY
- ADZUNA_APP_ID
- ADZUNA_APP_KEY
---------- Build ----------
command = “next build”
publish = “.next”
---------- Functions ----------
directory is the default, declared explicitly so it’s
discoverable in the file rather than implicit. We don’t
set node_bundler — esbuild (the default) handles our
TS imports fine.
directory = “netlify/functions”
Per-function timeout overrides. The default Netlify
sync-function timeout is 10s (free) / 26s (Pro). Our
/api/cv/upload route is intentionally synchronous
(parse + chunk + Gemini embed runs inline) and routinely
takes 15-30s, so we lift the cap to the Pro maximum.
Background functions, when added, can use the 15-min
default without explicit configuration.
timeout = 26
---------- Plugins ----------
The Next.js plugin is REQUIRED. It wires App Router API
routes (app/api/**) up as Netlify Functions; without
it, the upload route is not reachable as a function and
the client receives HTML instead of JSON.
package = “@netlify/plugin-nextjs”
---------- Environment hints ----------
NODE_VERSION = “20”
NEXT_TELEMETRY_DISABLED = “1”
