Open punksta opened 1 year ago
I had the same issue, it was coming from my metro.config.js
after a bad config of react-native-svg-transformer
.
Here's the config for Expo :
const { getDefaultConfig: getDefaultExpoConfig } = require("@expo/metro-config")
metroConfig = (() => {
const config = getDefaultExpoConfig(__dirname)
const { transformer, resolver } = config
config.transformer = {
...transformer,
babelTransformerPath: require.resolve("react-native-svg-transformer"),
}
config.resolver = {
...resolver,
assetExts: resolver.assetExts.filter((ext) => ext !== "svg"),
sourceExts: [...resolver.sourceExts, "svg"],
}
return config
})()
And for vanilla js
const { getDefaultConfig } = require("metro-config")
metroConfig = (async () => {
const {
resolver: { sourceExts, assetExts },
} = await getDefaultConfig()
return {
transformer: {
babelTransformerPath: require.resolve("react-native-svg-transformer"),
getTransformOptions: async () => ({
transform: {
experimentalImportSupport: false,
inlineRequires: false,
},
}),
},
resolver: {
assetExts: assetExts.filter((ext) => ext !== "svg"),
sourceExts: [...sourceExts, "svg"],
},
}
})()
And last : module.exports = metroConfig
Hope it helps !
I solved this by following the Expo guide to customising your metro config, then adding this:
config.resolver.assetExts.push("ttf")
i have changed my code form this code
/**
* Metro configuration for React Native
* https://github.com/facebook/react-native
*
* @format
*/
const { getDefaultConfig } = require("metro-config");
module.exports = {
transformer: {
getTransformOptions: async () => ({
transform: {
experimentalImportSupport: false,
inlineRequires: true,
},
}),
},
};
module.exports = (async () => {
const {
resolver: { sourceExts, assetExts }
} = await getDefaultConfig();
return {
transformer: {
babelTransformerPath: require.resolve("react-native-svg-transformer")
},
resolver: {
assetExts: assetExts.filter(ext => ext !== "svg"),
sourceExts: [...sourceExts, "svg"]
}
};
})();
to this code
const { getDefaultConfig } = require("metro-config")
metroConfig = (async () => {
const {
resolver: { sourceExts, assetExts },
} = await getDefaultConfig()
return {
transformer: {
babelTransformerPath: require.resolve("react-native-svg-transformer"),
getTransformOptions: async () => ({
transform: {
experimentalImportSupport: false,
inlineRequires: false,
},
}),
},
resolver: {
assetExts: assetExts.filter((ext) => ext !== "svg"),
sourceExts: [...sourceExts, "svg"],
},
}
})()
module.exports = metroConfig
and the issue is still the same as
error: Error: Unable to resolve module missing-asset-registry-path from src/assets/images/rg_image.png: missing-asset-registry-path could not be found within the project or in these directories:
node_modules
../../../../node_modules
> 1 | �PNG
2 |
3 |
4 | IHDR��.u_ pHYs!8!8E�1`sRGB���gAMA��
�a3�IDATx�kpו���<I
at ModuleResolver.resolveDependency (/node_modules/metro/src/node-haste/DependencyGraph/ModuleResolution.js:138:15)
at DependencyGraph.resolveDependency (//node_modules/metro/src/node-haste/DependencyGraph.js:231:43)
at /node_modules/metro/src/lib/transformHelpers.js:156:21
at resolveDependencies /node_modules/metro/src/DeltaBundler/buildSubgraph.js:42:25)
at visit (/node_modules/metro/src/DeltaBundler/buildSubgraph.js:83:30)
at async Promise.all (index 1)
at async visit (/node_modules/metro/src/DeltaBundler/buildSubgraph.js:92:5)
at async Promise.all (index 3)
at async visit (/node_modules/metro/src/DeltaBundler/buildSubgraph.js:92:5)
at async Promise.all (index 8)
Try this, it is work's for me.
const { getDefaultConfig } = require('expo/metro-config');
Hey, so using react-native-svg
and react-native-svg-transformer
with expo/metro-config
, your metro.config.js
file should look something like this:
const {getDefaultConfig} = require('expo/metro-config');
const config = getDefaultConfig(__dirname);
const { transformer, resolver } = config;
config.transformer = {
...transfromer,
babelTransformerPath: require.resolve('react-native-svg-transformer'),
}
config.resolver = {
...resolver,
assetExts: resolver.assetExts.filter((ext)=>ext!=='svg'),
sourceExts: [...resolver.sourceExts, 'svg'],
}
module.exports = config;
Of recent, I've had issues with eas update because of the metro config file, and the code above has helped me fix it perfectly. Plus, it's quite straightforward, easy to understand and replicate anytime!
I had the same issue, it was coming from my
metro.config.js
after a bad config ofreact-native-svg-transformer
.Here's the config for Expo :
const { getDefaultConfig: getDefaultExpoConfig } = require("@expo/metro-config") metroConfig = (() => { const config = getDefaultExpoConfig(__dirname) const { transformer, resolver } = config config.transformer = { ...transformer, babelTransformerPath: require.resolve("react-native-svg-transformer"), } config.resolver = { ...resolver, assetExts: resolver.assetExts.filter((ext) => ext !== "svg"), sourceExts: [...resolver.sourceExts, "svg"], } return config })()
And for vanilla js
const { getDefaultConfig } = require("metro-config") metroConfig = (async () => { const { resolver: { sourceExts, assetExts }, } = await getDefaultConfig() return { transformer: { babelTransformerPath: require.resolve("react-native-svg-transformer"), getTransformOptions: async () => ({ transform: { experimentalImportSupport: false, inlineRequires: false, }, }), }, resolver: { assetExts: assetExts.filter((ext) => ext !== "svg"), sourceExts: [...sourceExts, "svg"], }, } })()
And last :
module.exports = metroConfig
Hope it helps !
Thanks to this reply right here ❤️
conseguem ajuda com const { getDefaultConfig } = require("expo/metro-config"); const path = require('path');
module.exports = (async () => { const defaultConfig = await getDefaultConfig(__dirname); const { resolver: { sourceExts, assetExts } } = defaultConfig;
// Adicionando "ttf" à lista de extensões de asset
config.resolver.assetExts.push("ttf");
return {
...defaultConfig,
transformer: {
assetPlugins: ['expo-asset/tools/hashAssetFiles'],
getTransformOptions: async () => ({
transform: {
experimentalImportSupport: false,
inlineRequires: false
}
}),
babelTransformerPath: require.resolve("react-native-svg-transformer")
},
resolver: {
...defaultConfig.resolver,
assetExts: [...assetExts],
sourceExts: [...sourceExts, "svg"]
}
};
})(); Android Bundling failed 11670ms (index.js) Unable to resolve "missing-asset-registry-path" from "assets/fonts/Inter-Black.ttf"
I have the same issue, please help me fix this problem. This is the metro.config.js:
const path = require('path');
module.exports = {
resolver: {
assetExts: [
'png',
'jpg',
'jpeg',
'svg',
'ttf',
'otf',
// Add other file extensions that your project uses
],
},
projectRoot: path.resolve(__dirname),
watchFolders: [path.resolve(__dirname, 'node_modules')],
transformer: {
getTransformOptions: async () => ({
transform: {
experimentalImportSupport: false,
inlineRequires: false,
},
}),
},
// Add the asset directory to the watch list
watchFolders: [path.resolve(__dirname, './assets/')],
};
Error: Unable to resolve "missing-asset-registry-path" from "assets\svg\back_button.svg"
package.json