Skip to content

Commit 20550c4

Browse files
tido64meta-codesync[bot]
authored andcommitted
Fix exception in codegen when dependency is not found (#54665)
Summary: Fixed an `ENOENT` exception when a dependency does not export `package.json`, and your repo is set up as a monorepo using pnpm. > [!NOTE] > > This does not fix the actual search algorithm. We shouldn't be using `require.main.paths` here because it does not point to the correct starting point, the project root. > > This change only fixes the case where we cannot find `package.json` at all. ## Changelog: [GENERAL] [FIXED] - Fixed an `ENOENT` exception when a dependency does not export `package.json`, and your repo is set up as a monorepo using pnpm Pull Request resolved: #54665 Test Plan: **Before:** ``` % node node_modules/react-native/scripts/generate-codegen-artifacts.js -p . -o ios -t ios [Codegen] Analyzing package.json [Codegen] Could not find generated autolinking output at: /~/packages/app/example/ios/build/generated/autolinking/autolinking.json [Codegen] Searching for codegen-enabled libraries in the app. [Codegen] The "codegenConfig" field is not defined in package.json. Assuming there is nothing to generate at the app level. [Codegen] Could not find generated autolinking output at: /~/packages/app/example/ios/build/generated/autolinking/autolinking.json [Codegen] Searching for codegen-enabled libraries in the project dependencies. [Codegen] Found react-native-webapis/web-storage [Codegen] Found react-native [Codegen] Found react-native-safe-area-context Trying to find `package.json` for `webdriverio` in [ '/~/node_modules/.store/react-native-virtual-a5dea7d647/package/scripts/node_modules', '/~/node_modules/.store/react-native-virtual-a5dea7d647/package/node_modules', '/~/node_modules/.store/react-native-virtual-a5dea7d647/node_modules', '/~/node_modules/.store/node_modules', '/~/node_modules', '/node_modules' ] [Codegen] Error: ENOENT: no such file or directory, open '' [Codegen] Done. ``` **After:** ``` % node node_modules/react-native/scripts/generate-codegen-artifacts.js -p . -o ios -t ios [Codegen] Analyzing package.json [Codegen] Could not find generated autolinking output at: /~/packages/app/example/ios/build/generated/autolinking/autolinking.json [Codegen] Searching for codegen-enabled libraries in the app. [Codegen] The "codegenConfig" field is not defined in package.json. Assuming there is nothing to generate at the app level. [Codegen] Could not find generated autolinking output at: /~/packages/app/example/ios/build/generated/autolinking/autolinking.json [Codegen] Searching for codegen-enabled libraries in the project dependencies. [Codegen] Found react-native-webapis/web-storage [Codegen] Found react-native [Codegen] Found react-native-safe-area-context Trying to find package.json for webdriverio in [ '/~/node_modules/.store/react-native-virtual-a5dea7d647/package/scripts/node_modules', '/~/node_modules/.store/react-native-virtual-a5dea7d647/package/node_modules', '/~/node_modules/.store/react-native-virtual-a5dea7d647/node_modules', '/~/node_modules/.store/node_modules', '/~/node_modules', '/node_modules' ] [Codegen] Searching for codegen-enabled libraries in react-native.config.js [Codegen] Processing RNWWebStorageSpec [Codegen] Searching for podspec in the project dependencies. [Codegen] Supported Apple platforms: ios, macos, visionos for RNWWebStorageSpec [Codegen] Processing FBReactNativeSpec [Codegen] Searching for podspec in the project dependencies. [Codegen] Processing safeareacontext [Codegen] Searching for podspec in the project dependencies. [Codegen] Supported Apple platforms: ios, macos, tvos, visionos for safeareacontext [Codegen] Generating Native Code for RNWWebStorageSpec - ios [Codegen] Generated artifacts: ios/build/generated/ios/ReactCodegen [Codegen] [Codegen - FBReactNativeSpec] Skipping iOS code generation for FBReactNativeSpec as it has been generated already. [Codegen] Generating Native Code for safeareacontext - ios [Codegen] Generated artifacts: ios/build/generated/ios/ReactCodegen [Codegen] Generating RCTThirdPartyComponentsProvider.h [Codegen] Generated artifact: ios/build/generated/ios/ReactCodegen/RCTThirdPartyComponentsProvider.h [Codegen] Generating RCTThirdPartyComponentsProvider.mm [Codegen] Generated artifact: ios/build/generated/ios/ReactCodegen/RCTThirdPartyComponentsProvider.mm [Codegen] Generating RCTModulesProvider.h [Codegen] Generated artifact: ios/build/generated/ios/ReactCodegen/RCTModuleProviders.h [Codegen] Generating RCTModuleProviders.mm [Codegen] Generated artifact: ios/build/generated/ios/ReactCodegen/RCTModuleProviders.mm [Codegen] Generating RCTAppDependencyProvider [Codegen] Generated artifact: ios/build/generated/ios/ReactAppDependencyProvider/RCTAppDependencyProvider.h [Codegen] Generated artifact: ios/build/generated/ios/ReactAppDependencyProvider/RCTAppDependencyProvider.mm [Codegen] Generated podspec: ios/build/generated/ios/ReactAppDependencyProvider/ReactAppDependencyProvider.podspec [Codegen] Generated podspec: ios/build/generated/ios/ReactCodegen/ReactCodegen.podspec [Codegen] Generating Package.swift [Codegen] Generated artifact: ios/build/generated/ios/Package.swift [Codegen] Done. ``` Reviewed By: cipolleschi Differential Revision: D87872496 Pulled By: cortinico fbshipit-source-id: b9da0e1808248cb806a2a8a0ee575566ce027067
1 parent 69b131c commit 20550c4

File tree

1 file changed

+2
-1
lines changed
  • packages/react-native/scripts/codegen/generate-artifacts-executor

1 file changed

+2
-1
lines changed

packages/react-native/scripts/codegen/generate-artifacts-executor/utils.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -265,7 +265,8 @@ function findExternalLibraries(
265265
pkgJson.dependencies[dependency],
266266
'package.json',
267267
);
268-
} else {
268+
}
269+
if (!configFilePath) {
269270
return [];
270271
}
271272
}

0 commit comments

Comments
 (0)