vercel/next.js

dynamic assetPrefix not working in "standalone" build, because of serialization

lionskape opened this issue · 0 comments

Link to the code that reproduces this issue

https://github.com/lionskape/next-standalone-assetprefix-bugrepot/blob/main/next.config.js

To Reproduce

  1. create next config like this:
let nextConfig = {
    output: 'standalone',
    assetPrefix: process.env.CDN_URI ?? '',
};
  1. run next build without CDN_URI variable
  2. run nextjs server CDN_URI="https://cdn.net" node .next/standalone/server.js

Current vs. Expected behavior

Current behavior:
No prefix will be added to resources because of config serialization -

const nextConfig = ${JSON.stringify(nextConfig)}

Expected behavior:
dynamic assetPrefix works fine, environment variable is consumed.

Provide environment information

Operating System:
  Platform: darwin
  Arch: arm64
  Version: Darwin Kernel Version 23.4.0: Fri Mar 15 00:10:42 PDT 2024; root:xnu-10063.101.17~1/RELEASE_ARM64_T6000
  Available memory (MB): 16384
  Available CPU cores: 10
Binaries:
  Node: 18.17.1
  npm: 9.6.7
  Yarn: N/A
  pnpm: 7.32.1
Relevant Packages:
  next: 14.2.3 // Latest available version is detected (14.2.3).
  eslint-config-next: N/A
  react: 18.2.0
  react-dom: 18.2.0
  typescript: 5.3.3
Next.js Config:
  output: standalone

Which area(s) are affected? (Select all that apply)

Output (export/standalone), Runtime

Which stage(s) are affected? (Select all that apply)

next build (local)

Additional context

No response