Skip to content

fix: avoid EISDIR crash when .env is a directory#721

Draft
posthog[bot] wants to merge 1 commit into
mainfrom
posthog-code/fix-env-dir-eisdir
Draft

fix: avoid EISDIR crash when .env is a directory#721
posthog[bot] wants to merge 1 commit into
mainfrom
posthog-code/fix-env-dir-eisdir

Conversation

@posthog

@posthog posthog Bot commented Jun 24, 2026

Copy link
Copy Markdown

Problem

Users running the wizard in a project where .env or .env.local is a directory (common when a Python virtualenv is named .env) hit an uncaught EISDIR: illegal operation on a directory, read crash that aborts the API-key-from-env lookup.

readApiKeyFromEnv() guarded each candidate path with fs.existsSync(), which returns true for directories as well as files, so the subsequent fs.readFileSync() threw EISDIR.

Why: keep the wizard's env-key fallback working instead of crashing for these project layouts.

Changes

In src/utils/env-api-key.ts, read each candidate directly inside a try/catch and continue to the next on any read error (covers EISDIR for directories and ENOENT for missing files), ultimately returning undefined.

Test plan

Added src/utils/__tests__/env-api-key.test.ts covering the normal .env/.env.local reads, precedence, and the directory case (no throw, falls through). pnpm build && pnpm test && pnpm fix all pass.


Created with PostHog Code from an inbox report.

readApiKeyFromEnv guarded each candidate path with fs.existsSync, which
returns true for directories too, so a project with a directory named
.env or .env.local (common with Python virtualenvs) crashed the
subsequent readFileSync with EISDIR. Read directly and skip on any read
error instead.

Generated-By: PostHog Code
Task-Id: 2e86216f-b802-4c88-88b5-0118cea5c89a
@github-actions

Copy link
Copy Markdown

🧙 Wizard CI

Run the Wizard CI and test your changes against wizard-workbench example apps by replying with a GitHub comment using one of the following commands:

Test all apps:

  • /wizard-ci all

Test all apps in a directory:

  • /wizard-ci basic-integration
  • /wizard-ci error-tracking-upload-source-maps
  • /wizard-ci misc
  • /wizard-ci revenue

Test an individual app:

  • /wizard-ci basic-integration/android
  • /wizard-ci basic-integration/angular
  • /wizard-ci basic-integration/astro
Show more apps
  • /wizard-ci basic-integration/django
  • /wizard-ci basic-integration/fastapi
  • /wizard-ci basic-integration/flask
  • /wizard-ci basic-integration/javascript-node
  • /wizard-ci basic-integration/javascript-web
  • /wizard-ci basic-integration/laravel
  • /wizard-ci basic-integration/next-js
  • /wizard-ci basic-integration/nuxt
  • /wizard-ci basic-integration/python
  • /wizard-ci basic-integration/rails
  • /wizard-ci basic-integration/react-native
  • /wizard-ci basic-integration/react-router
  • /wizard-ci basic-integration/sveltekit
  • /wizard-ci basic-integration/swift
  • /wizard-ci basic-integration/tanstack-router
  • /wizard-ci basic-integration/tanstack-start
  • /wizard-ci basic-integration/vue
  • /wizard-ci error-tracking-upload-source-maps/android
  • /wizard-ci error-tracking-upload-source-maps/cicd-docker-node-raw
  • /wizard-ci error-tracking-upload-source-maps/cicd-github-actions-docker-node-raw
  • /wizard-ci error-tracking-upload-source-maps/cicd-github-actions-nested-docker-node-raw
  • /wizard-ci error-tracking-upload-source-maps/cicd-github-actions-node-raw
  • /wizard-ci error-tracking-upload-source-maps/cicd-github-actions-single-stage-docker-node-raw
  • /wizard-ci error-tracking-upload-source-maps/cicd-gitlab-node-raw
  • /wizard-ci error-tracking-upload-source-maps/cicd-monorepo-pnpm-node-react
  • /wizard-ci error-tracking-upload-source-maps/cicd-monorepo-raw-node-react
  • /wizard-ci error-tracking-upload-source-maps/cicd-ssh-vps-node-raw
  • /wizard-ci error-tracking-upload-source-maps/flutter
  • /wizard-ci error-tracking-upload-source-maps/ios
  • /wizard-ci error-tracking-upload-source-maps/next
  • /wizard-ci error-tracking-upload-source-maps/next-no-posthog
  • /wizard-ci error-tracking-upload-source-maps/node-raw
  • /wizard-ci error-tracking-upload-source-maps/node-rollup
  • /wizard-ci error-tracking-upload-source-maps/node-rollup-typescript-plugin
  • /wizard-ci error-tracking-upload-source-maps/node-webpack
  • /wizard-ci error-tracking-upload-source-maps/nuxt-3-6
  • /wizard-ci error-tracking-upload-source-maps/nuxt-4-3
  • /wizard-ci error-tracking-upload-source-maps/react-native
  • /wizard-ci error-tracking-upload-source-maps/react-vite
  • /wizard-ci error-tracking-upload-source-maps/rust
  • /wizard-ci misc/quack-quack
  • /wizard-ci revenue/stripe

Results will be posted here when complete.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants