Hi I am developing a expo react native app in nx monorepo and i am getting a strange issue when I try to use another project inside the mobile project. The issue I am getting is
iOS Bundling failed 85179ms (index.js)
error: Error: Cannot resolve path
at firstResolver (/../node_modules/@nx/expo/plugins/metro-resolver.js:33:15)
at firstResolver (/../node_modules/@expo/cli/src/start/server/metro/withMetroResolvers.ts:108:16)
at resolveRequest (/../node_modules/@expo/cli/src/start/server/metro/withMetroResolvers.ts:137:16)
at Object.resolve (/../node_modules/metro-resolver/src/resolve.js:47:12)
at ModuleResolver.resolveDependency (/../node_modules/metro/src/node-haste/DependencyGraph/ModuleResolution.js:79:31)
at DependencyGraph.resolveDependency (/../node_modules/metro/src/node-haste/DependencyGraph.js:277:43)
at Object.resolve (/../node_modules/metro/src/lib/transformHelpers.js:169:21)
at Graph._resolveDependencies (/../node_modules/metro/src/DeltaBundler/Graph.js:473:35)
at Graph._processModule (/../node_modules/metro/src/DeltaBundler/Graph.js:261:38)
at processTicksAndRejections (node:internal/process/task_queues:95:5)
at Graph._addDependency (/../node_modules/metro/src/DeltaBundler/Graph.js:372:20)
at async Promise.all (index 2)
at Graph._processModule (/../node_modules/metro/src/DeltaBundler/Graph.js:322:5)
at Graph._addDependency (/../node_modules/metro/src/DeltaBundler/Graph.js:372:20)
at async Promise.all (index 6)
at Graph._processModule (/../node_modules/metro/src/DeltaBundler/Graph.js:322:5)
However this is only happening when i use one project. If I use another project the build works fine. This is the metro config
const { withNxMetro } = require('@nx/expo');
const { getDefaultConfig } = require('@expo/metro-config');
const { mergeConfig } = require('metro-config');
const { generate } = require('@storybook/react-native/scripts/generate');
const exclusionList = require('metro-config/src/defaults/exclusionList');
const path = require('path');
generate({
configPath: path.resolve(__dirname, './.storybook'),
});
const defaultConfig = getDefaultConfig(__dirname);
const { assetExts, sourceExts } = defaultConfig.resolver;
/**
* Metro configuration
* https://facebook.github.io/metro/docs/configuration
*
* @type {import('metro-config').MetroConfig}
*/
const customConfig = {
transformer: {
babelTransformerPath: require.resolve('react-native-svg-transformer'),
},
resolver: {
assetExts: assetExts.filter((ext) => ext !== 'svg'),
sourceExts: [...sourceExts, 'cjs', 'mjs', 'svg'],
blockList: exclusionList([/^(?!.*node_modules).*/dist/.*/]),
resolverMainFields: ['sbmodern', ...getDefaultConfig(__dirname).resolver.resolverMainFields],
},
resetCache: true,
};
module.exports = withNxMetro(mergeConfig(defaultConfig, customConfig), {
// Change this to true to see debugging info.
// Useful if you have issues resolving modules
debug: true,
// all the file extensions used for imports other than 'ts', 'tsx', 'js', 'jsx', 'json'
extensions: [],
// Specify folders to watch, in addition to Nx defaults (workspace libraries and node_modules)
watchFolders: [],
});
This is project.json of the library that’s failing the project build
{
"name": "sample",
"$schema": "../../node_modules/nx/schemas/project-schema.json",
"sourceRoot": "libs/sample/src",
"projectType": "library",
"targets": {}
}
versions i am using are
nx: 18.0.4
react-native: 0.73.2
expo: 50.0.6
Any assistance would be greatly appreciated.