Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Error on local build with very weird ENOTDIR #2173

Open
cipriancaba opened this issue Jan 10, 2024 · 12 comments
Open

Error on local build with very weird ENOTDIR #2173

cipriancaba opened this issue Jan 10, 2024 · 12 comments
Labels
needs review Issue is ready to be reviewed by a maintainer

Comments

@cipriancaba
Copy link

Build/Submit details page URL

No response

Summary

local build fails

❯ EXPO_DEBUG=1 DEBUG=expo:* npx eas build --local --profile development-simulator --platform ios
Error: ENOTDIR: not a directory, open '/Users/cipri/dev/pp/al/al/apps/al/ios/Pods/Headers/Private/FBLazyVector/FBLazyVector/FBLazyIterator.h/package.json'

Managed or bare?

managed

Environment

bunx expo-env-info

expo-env-info 1.0.5 environment info:
System:
OS: macOS 14.2.1
Shell: 5.9 - /bin/zsh
Binaries:
Node: 20.9.0 - ~/.nvm/versions/node/v20.9.0/bin/node
Yarn: 1.19.0 - ~/.nvm/versions/node/v18.17.1/bin/yarn
Managers:
CocoaPods: 1.11.3 - /usr/local/bin/pod
SDKs:
iOS SDK:
Platforms: DriverKit 23.2, iOS 17.2, macOS 14.2, tvOS 17.2, visionOS 1.0, watchOS 10.2
IDEs:
Android Studio: 2022.1 AI-221.6008.13.2211.9477386
Xcode: 15.2/15C500b - /usr/bin/xcodebuild
npmPackages:
@expo/webpack-config: ^19.0.0 => 19.0.0
expo: ^50.0.0-preview.8 => 50.0.0-preview.8
react: 18.2.0 => 18.2.0
react-dom: 18.2.0 => 18.2.0
react-native: 0.73.1 => 0.73.1
npmGlobalPackages:
eas-cli: 5.9.3
Expo Workflow: bare

❯ npx expo-doctor
Error: ENOTDIR: not a directory, open '/Users/cipri/dev/pp/al/al/apps/al/ios/Pods/Headers/Private/FBLazyVector/FBLazyVector/FBLazyIterator.h/package.json'

Error output

Error: ENOTDIR: not a directory, open '/Users/cipri/dev/pp/al/al/apps/al/ios/Pods/Headers/Private/FBLazyVector/FBLazyVector/FBLazyIterator.h/package.json'

Reproducible demo or steps to reproduce from a blank project

happens in a monorepo

nohoist

"nohoist": [ "**/expo" ]

@cipriancaba cipriancaba added the needs review Issue is ready to be reviewed by a maintainer label Jan 10, 2024
@szdziedzic
Copy link
Member

What is your working dir when you run the eas build command?

@cipriancaba
Copy link
Author

cipriancaba commented Jan 11, 2024

What is your working dir when you run the eas build command?

/Users/cipri/dev/pp/al/al/apps/al

Monorepo root: /Users/cipri/dev/pp/al/al

Not sure why eas would even want to access the /package.json from an h file?

I'm going crazy over this. bunx seems to work but not when trying to build locally, it hits the same error

EXPO_DEBUG=1 DEBUG=expo:* bunx eas build --local --profile development-simulator --platform ios
Loaded "env" configuration for the "development-simulator" profile: ANDROID_SDK_ROOT, ANDROID_HOME. Learn more: https://docs.expo.dev/build-reference/variables/
Specified value for "ios.bundleIdentifier" in app.config.ts or app.json is ignored because an ios directory was detected in the project.
EAS Build will use the value found in the native code.
ios.buildNumber field in app config is ignored when version source is set to remote, but this value will still be in the manifest available via expo-constants. It's recommended to remove this value from app config.
Unable to track Expo.plist in Git. Proceeding without tracking.
  Reason: the command "git add /Users/cipri/dev/pp/al/al/apps/al/ios/APP/Supporting/Expo.plist" exited with an error.

- Compressing project files
npm exited with non-zero code: 236
- Compressing project files
Error: npm exited with non-zero code: 236
    at ChildProcess.completionListener (/Users/cipri/.nvm/versions/node/v20.9.0/lib/node_modules/eas-cli/node_modules/@expo/spawn-async/build/spawnAsync.js:41:23)
    at Object.onceWrapper (node:events:629:26)
    at ChildProcess.emit (node:events:514:28)
    at maybeClose (node:internal/child_process:1105:16)
    at ChildProcess._handle.onexit (node:internal/child_process:305:5)
    ...
    at spawnAsync (/Users/cipri/.nvm/versions/node/v20.9.0/lib/node_modules/eas-cli/node_modules/@expo/spawn-async/build/spawnAsync.js:7:23)
    at isAtLeastNpm7Async (/Users/cipri/.nvm/versions/node/v20.9.0/lib/node_modules/eas-cli/build/build/local.js:87:54)
    at getCommandAndArgsAsync (/Users/cipri/.nvm/versions/node/v20.9.0/lib/node_modules/eas-cli/build/build/local.js:75:19)
    at runLocalBuildAsync (/Users/cipri/.nvm/versions/node/v20.9.0/lib/node_modules/eas-cli/build/build/local.js:30:37)
    at /Users/cipri/.nvm/versions/node/v20.9.0/lib/node_modules/eas-cli/build/build/build.js:84:50
    at startBuildAsync (/Users/cipri/.nvm/versions/node/v20.9.0/lib/node_modules/eas-cli/build/build/runBuildAndSubmit.js:250:18)
    at async prepareAndStartBuildAsync (/Users/cipri/.nvm/versions/node/v20.9.0/lib/node_modules/eas-cli/build/build/runBuildAndSubmit.js:236:19)
    at async runBuildAndSubmitAsync (/Users/cipri/.nvm/versions/node/v20.9.0/lib/node_modules/eas-cli/build/build/runBuildAndSubmit.js:87:49)
    at async Build.runAsync (/Users/cipri/.nvm/versions/node/v20.9.0/lib/node_modules/eas-cli/build/commands/build/index.js:41:9)
    at async Build._run (/Users/cipri/.nvm/versions/node/v20.9.0/lib/node_modules/eas-cli/node_modules/@oclif/core/lib/command.js:80:22) {
  pid: 3827,
  output: [
    '',
    "Error: ENOTDIR: not a directory, open '/Users/cipri/dev/pp/al/al/apps/al/ios/Pods/Headers/Private/FBLazyVector/FBLazyVector/FBLazyIterator.h/package.json'\n"
  ],
  stdout: '',
  stderr: "Error: ENOTDIR: not a directory, open '/Users/cipri/dev/pp/al/al/apps/al/ios/Pods/Headers/Private/FBLazyVector/FBLazyVector/FBLazyIterator.h/package.json'\n",
  status: 236,
  signal: null
}
- Compressing project files
    Error: build command failed.
- Compressing project files

@ddnzcn
Copy link

ddnzcn commented Mar 25, 2024

I can reproduce it within monorepo. Even the npx expo start command complains me about something inside the pods is not a directory

➜  expo git:(main) ✗ npx expo start
Error: ENOTDIR: not a directory, open '<monorepo_root>/apps/mobile_apps/expo/ios/Pods/Headers/Private/DoubleConversion/double-conversion/bignum-dtoa.h/package.json'
    at async open (node:internal/fs/promises:633:25)
    at async readFile (node:internal/fs/promises:1242:14)
    at async mapWorkspaces (/Users/ddnzcn/.nvm/versions/node/v21.6.2/lib/node_modules/npm/node_modules/@npmcli/map-workspaces/lib/index.js:109:15)
    at async Config.loadLocalPrefix (/Users/ddnzcn/.nvm/versions/node/v21.6.2/lib/node_modules/npm/node_modules/@npmcli/config/lib/index.js:707:28)
    at async Config.loadProjectConfig (/Users/ddnzcn/.nvm/versions/node/v21.6.2/lib/node_modules/npm/node_modules/@npmcli/config/lib/index.js:638:5)
    at async Config.load (/Users/ddnzcn/.nvm/versions/node/v21.6.2/lib/node_modules/npm/node_modules/@npmcli/config/lib/index.js:282:5)
    at async #load (/Users/ddnzcn/.nvm/versions/node/v21.6.2/lib/node_modules/npm/lib/npm.js:195:5)
    at async module.exports (/Users/ddnzcn/.nvm/versions/node/v21.6.2/lib/node_modules/npm/lib/cli-entry.js:40:5)

The .h file exists but I'm not so sure why it appends a /package.json after it.

@ddnzcn
Copy link

ddnzcn commented Mar 26, 2024

@cipriancaba I had success with upgrading to SDK 50.

@cipriancaba
Copy link
Author

Thanks @ddnzcn Been on 50 but still happening, really weird. I can run it with bunx for now

@ddnzcn
Copy link

ddnzcn commented Apr 2, 2024

@cipriancaba I've recently reproduced the same error again while trying to open react-devtools. I suspect it's something related to nvm or npx. Are you also using nvm or something similar?

@cipriancaba
Copy link
Author

Yeah, using nvm, only happens with this monorepo though

@ddnzcn
Copy link

ddnzcn commented Apr 2, 2024

I just tried to removed every other version that I had installed with nvm. It didn't worked. I'll investigate this a little further. Thank you for pointing me to bunx but even bunx still gives me the same error.

@ddnzcn
Copy link

ddnzcn commented Apr 3, 2024

It seems I have deleted .DS_Store file deleted in the local repository. Recloning the projected solved the issue for me.

@sahinakkaya
Copy link

The problem happens because you somehow include "ios" and "android" folders in your package.json.

My directory structure was like this:

apps
└── myApp
    ├── expo
    └── next

And there was ios and android folders under expo. In my package.json, I had:

  "workspaces": [
    "apps/**/*",
    ...
  ],

which will include expo and all of its subdir.

The problem is gone after I removed android and ios folders.

(Couldn't find a way to generate these folders outside expo dir. And also couldn't find a way to exclude them)

@cipriancaba
Copy link
Author

Oh wow @sahinakkaya that's an interesting find. I tested that and it seems that expo now runs fine

Still think this shouldn't happen and it should be fixed by the expo team

Thanks for pointing me in the right direction

"workspaces": {
    "packages": [
      "apps/app",
      "apps/site"
    ]

@sahinakkaya
Copy link

I have encountered the same problem again. This time it was not ios or android folders. It was because I added a random script bump-android.sh inside expo dir. And the error was like can't find 'bump-android.sh/package.json' . This is really stupid but just make sure you don't have any file / folders other than the required ones in expo dir.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
needs review Issue is ready to be reviewed by a maintainer
Projects
None yet
Development

No branches or pull requests

4 participants