t3-oss / create-t3-turbo

Clean and simple starter repo using the T3 Stack along with Expo React Native

Home Page:https://turbo.t3.gg

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

bug: cannot load environment variables

t4t5u0 opened this issue · comments

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.

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,
  },