bug: cannot load environment variables
t4t5u0 opened this issue · comments
t4t5u0 commented
Provide environment information
System:
OS: macOS 13.4.1
CPU: (10) arm64 Apple M1 Pro
Memory: 111.70 MB / 16.00 GB
Shell: 5.9 - /bin/zsh
Binaries:
Node: 20.10.0 - ~/.volta/tools/image/node/20.10.0/bin/node
npm: 10.2.3 - ~/.volta/tools/image/node/20.10.0/bin/npm
Watchman: 2023.10.09.00 - /opt/homebrew/bin/watchman
Describe the bug
When running pnpm run dev
, zod validation fails because environment variables are not read. As a result, the application fails to start.
Link to reproduction
this repo
To reproduce
pnpm dev
or
cd apps/nextjs
pnpm dev
Additional information
❯ pnpm run dev
> @acme/nextjs@0.1.0 dev /Users/tatsuo/Caname/create-t3-turbo/apps/nextjs
> pnpm with-env next dev
> @acme/nextjs@0.1.0 with-env /Users/tatsuo/Caname/create-t3-turbo/apps/nextjs
> dotenv -e ../../.env -- "next" "dev"
❌ Invalid environment variables: {
DB_USERNAME: [ 'Required' ],
DB_PASSWORD: [ 'Required' ],
DB_HOST: [ 'Required' ],
DB_NAME: [ 'Required' ]
}
file:///Users/tatsuo/Caname/create-t3-turbo/node_modules/@t3-oss/env-nextjs/dist/index.mjs:1
import{z as a}from"zod";function f(e){let r=e.runtimeEnvStrict??e.runtimeEnv??process.env;if(e.emptyStringAsUndefined??!1)for(let[t,n]of Object.entries(r))n===""&&delete r[t];if(e.skipValidation)return r;let i=typeof e.client=="object"?e.client:{},o=typeof e.server=="object"?e.server:{},s=typeof e.shared=="object"?e.shared:{},d=a.object(i),T=a.object(o),l=a.object(s),v=e.isServer??typeof window>"u",p=d.merge(l),y=T.merge(l).merge(d),c=v?y.safeParse(r):p.safeParse(r),m=e.onValidationError??(t=>{throw console.error("\u274C Invalid environment variables:",t.flatten().fieldErrors),new Error("Invalid environment variables")}),u=e.onInvalidAccess??(t=>{throw new Error("\u274C Attempted to access a server-side environment variable on the client")});return c.success===!1?m(c.error):new Proxy(c.data,{get(t,n){if(!(typeof n!="string"||n==="__esModule"||n==="$$typeof"))return!v&&e.clientPrefix&&!n.startsWith(e.clientPrefix)&&l.shape[n]===void 0?u(n):t[n]}})}var x="NEXT_PUBLIC_";function P(e){let r=typeof e.client=="object"?e.client:{},i=typeof e.server=="object"?e.server:{},o=e.shared,s=e.runtimeEnv?e.runtimeEnv:{...process.env,...e.experimental__runtimeEnv};return f({...e,shared:o,client:r,server:i,clientPrefix:x,runtimeEnv:s})}export{P as createEnv};
^
Error: Invalid environment variables
at m (file:///Users/tatsuo/Caname/create-t3-turbo/node_modules/@t3-oss/env-nextjs/dist/index.mjs:1:585)
at f (file:///Users/tatsuo/Caname/create-t3-turbo/node_modules/@t3-oss/env-nextjs/dist/index.mjs:1:775)
at P (file:///Users/tatsuo/Caname/create-t3-turbo/node_modules/@t3-oss/env-nextjs/dist/index.mjs:1:1174)
at file:///Users/tatsuo/Caname/create-t3-turbo/apps/nextjs/src/env.mjs:4:20
at ModuleJob.run (node:internal/modules/esm/module_job:218:25)
at async ModuleLoader.import (node:internal/modules/esm/loader:329:24)
at async importModuleDynamicallyWrapper (node:internal/vm/module:431:15)
at async loadConfig (/Users/tatsuo/Caname/create-t3-turbo/node_modules/next/dist/server/config.js:698:36)
at async nextDev (/Users/tatsuo/Caname/create-t3-turbo/node_modules/next/dist/cli/next-dev.js:191:14)
at async main (/Users/tatsuo/Caname/create-t3-turbo/node_modules/next/dist/bin/next:150:5)
Node.js v20.10.0
ELIFECYCLE Command failed with exit code 1.
ELIFECYCLE Command failed with exit code 1.
t4t5u0 commented
I fixed it. add envs to runtimeEnv
apps/nextjs/src/env.mjs
runtimeEnv: {
VERCEL_URL: process.env.VERCEL_URL,
PORT: process.env.PORT,
// DATABASE_URL: process.env.DATABASE_URL,
DB_USERNAME: process.env.DB_USERNAME,
DB_PASSWORD: process.env.DB_PASSWORD,
DB_HOST: process.env.DB_HOST,
DB_NAME: process.env.DB_NAME,
// NEXT_PUBLIC_CLIENTVAR: process.env.NEXT_PUBLIC_CLIENTVAR,
},