Here is my last version of my .babelrc file :
{
"presets": ["babel-preset-expo"],
"env": {
"development": {
"plugins": ["transform-react-jsx-source"]
}
},
"plugins": [
["module-resolver", {
"root": ["./src"],
"alias": {
"$components": "./src/components",
"$screens": "./src/screens",
"$stores": "./src/stores",
"$utils": "./src/utils",
"$services": "./src/services",
"$assets": "./assets",
}
}]
]
}
I tried to change many things but expo doesn't want to publish the app and display an error 500 during the publication when it meet the first import on the Main.js file :
import stores from 'stores';
And the error :
500 - "{\"originModulePath\":\"/Users/jhirsch/Code/kliner/app-client/src/Main.js\",\"targetModuleName\":\"stores\",\"message\":\"Unable to resolve module `stores` from `/Users/jhirsch/Code/kliner/app-client/src/Main.js`: Module `stores` does not exist in the Haste module map\\n\\nThis might be related to https://github.com/facebook/react-native/issues/4968\\nTo resolve try the following:\\n 1. Clear watchman watches: `watchman watch-del-all`.\\n 2. Delete the `node_modules` folder: `rm -rf node_modules && npm install`.\\n 3. Reset Metro Bundler cache: `rm -rf /tmp/metro-bundler-cache-*` or `npm start -- --reset-cache`.\\n 4. Remove haste cache: `rm -rf /tmp/haste-map-react-native-packager-*`.\",\"errors\":[{\"description\":\"Unable to resolve module `stores` from `/Users/jhirsch/Code/kliner/app-client/src/Main.js`: Module `stores` does not exist in the Haste module map\\n\\nThis might be related to https://github.com/facebook/react-native/issues/4968\\nTo resolve try the following:\\n 1. Clear watchman watches: `watchman watch-del-all`.\\n 2. Delete the `node_modules` folder: `rm -rf node_modules && npm install`.\\n 3. Reset Metro Bundler cache: `rm -rf /tmp/metro-bundler-cache-*` or `npm start -- --reset-cache`.\\n 4. Remove haste cache: `rm -rf /tmp/haste-map-react-native-packager-*`.\"}],\"name\":\"Error\",\"stack\":\"Error: Unable to resolve module `stores` from `/Users/jhirsch/Code/kliner/app-client/src/Main.js`: Module `stores` does not exist in the Haste module map\\n\\nThis might be related to https://github.com/facebook/react-native/issues/4968\\nTo resolve try the following:\\n 1. Clear watchman watches: `watchman watch-del-all`.\\n 2. Delete the `node_modules` folder: `rm -rf node_modules && npm install`.\\n 3. Reset Metro Bundler cache: `rm -rf /tmp/metro-bundler-cache-*` or `npm start -- --reset-cache`.\\n 4. Remove haste cache: `rm -rf /tmp/haste-map-react-native-packager-*`.\\n at ModuleResolver.resolveDependency (/Users/jhirsch/Code/kliner/app-client/node_modules/metro/src/node-haste/DependencyGraph/ModuleResolution.js:209:1301)\\n at ResolutionRequest.resolveDependency (/Users/jhirsch/Code/kliner/app-client/node_modules/metro/src/node-haste/DependencyGraph/ResolutionRequest.js:83:16)\\n at DependencyGraph.resolveDependency (/Users/jhirsch/Code/kliner/app-client/node_modules/metro/src/node-haste/DependencyGraph.js:238:485)\\n at Object.resolve (/Users/jhirsch/Code/kliner/app-client/node_modules/metro/src/lib/transformHelpers.js:180:25)\\n at dependencies.map.result (/Users/jhirsch/Code/kliner/app-client/node_modules/metro/src/DeltaBundler/traverseDependencies.js:311:29)\\n at Array.map (<anonymous>)\\n at resolveDependencies (/Users/jhirsch/Code/kliner/app-client/node_modules/metro/src/DeltaBundler/traverseDependencies.js:307:16)\\n at /Users/jhirsch/Code/kliner/app-client/node_modules/metro/src/DeltaBundler/traverseDependencies.js:164:33\\n at Generator.next (<anonymous>)\\n at step (/Users/jhirsch/Code/kliner/app-client/node_modules/metro/src/DeltaBundler/traverseDependencies.js:266:307)\"}"
ERROR
15:45
Unable to resolve "stores" from "src/Main.js"
Do you have an idea or an alternative to resolve the aliases with expo? It's strange because it's functionnal when i run the app on local simulator.
A Babel plugin to add a new resolver for your modules when compiling your code using Babel. This plugin allows you to add new "root" directories that contain your modules. It also allows you to setup a custom alias for directories, specific files, or even other npm modules.
This preset extends the default React Native preset ( metro-react-native-babel-preset ) and adds support for decorators, tree-shaking web packages, and loading font icons with optional native dependencies if they're installed.
React Native itself uses this Babel preset by default when transforming your app's source code. If you wish to use a custom Babel configuration by writing a babel. config. js file in your project's root directory, you must specify all the plugins necessary to transform your code.
The . babelrc file is your local configuration for your code in your project. Generally you would put it in the root of your application repo. It will affect all files that Babel processes that are in the same directory or in sibling directories of the . babelrc .
Finally .babelrc works in this format :
{
"presets": ["babel-preset-expo"],
"plugins": [
[
"module-resolver",
{
"root": ["./"],
"alias": {
"@components": "./src/components",
"@screens": "./src/screens",
"@stores": "./src/stores",
"@utils": "./src/utils",
"@services": "./src/services",
"@assets": "./assets",
"@constants": "./src/constants"
}
},
],
],
}
And add '@' when i import :
import stores from '@stores';
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With