Reputation: 7808
I have updated node
today and I'm getting this error:
error: TypeError: Cannot read properties of undefined (reading 'transformFile')
at Bundler.transformFile (/Users/.../node_modules/metro/src/Bundler.js:48:30)
at runMicrotasks (<anonymous>)
at processTicksAndRejections (node:internal/process/task_queues:96:5)
at async Object.transform (/Users/.../node_modules/metro/src/lib/transformHelpers.js:101:12)
at async processModule (/Users/.../node_modules/metro/src/DeltaBundler/traverseDependencies.js:137:18)
at async traverseDependenciesForSingleFile (/Users/.../node_modules/metro/src/DeltaBundler/traverseDependencies.js:131:3)
at async Promise.all (index 0)
at async initialTraverseDependencies (/Users/.../node_modules/metro/src/DeltaBundler/traverseDependencies.js:114:3)
at async DeltaCalculator._getChangedDependencies (/Users/.../node_modules/metro/src/DeltaBundler/DeltaCalculator.js:164:25)
at async DeltaCalculator.getDelta (/Users/.../node_modules/metro/src/DeltaBundler/DeltaCalculator.js:94:16)
Other than that I haven't done anything unusual, so I'm not sure what to share. If I'm missing any info please comment and I'll add it.
While building the terminal also throws this error:
Failed to construct transformer: Error: error:0308010C:digital envelope routines::unsupported
at new Hash (node:internal/crypto/hash:67:19)
at Object.createHash (node:crypto:130:10)
at stableHash (/Users/.../node_modules/metro-cache/src/stableHash.js:19:8)
at Object.getCacheKey (/Users/.../node_modules/metro-transform-worker/src/index.js:593:7)
at getTransformCacheKey (/Users/.../node_modules/metro/src/DeltaBundler/getTransformCacheKey.js:24:19)
at new Transformer (/Users/.../node_modules/metro/src/DeltaBundler/Transformer.js:48:9)
at /Users/.../node_modules/metro/src/Bundler.js:22:29
at processTicksAndRejections (node:internal/process/task_queues:96:5) {
opensslErrorStack: [ 'error:03000086:digital envelope routines::initialization error' ],
library: 'digital envelope routines',
reason: 'unsupported',
code: 'ERR_OSSL_EVP_UNSUPPORTED'
}
My node, npx and react-native versions are:
Upvotes: 89
Views: 147259
Reputation: 149
This solution worked for me
if you can't find this path just check ".../node_modules/metro-cache/src/stableHash.js
Upvotes: 2
Reputation: 1
This worked for me:
nvm install 16
nvm use 16
check if node version changed to 16 using "npx react-native info"
then run "npm install"
Upvotes: 0
Reputation: 681
export NODE_OPTIONS=--openssl-legacy-provider
npm start
Upvotes: 1
Reputation: 867
Fixed this by updating updating node_modules/react-native/scripts/find-node.sh @ L7
set -e change with
set +e
P.S. Tried switching node from nvm to brew but that didn't made any difference.
I have tried all methods then I have found this one it solves my issue this below is refrenece
https://github.com/facebook/react-native/issues/36762#issuecomment-1535910492
Hope you can solve yours!
Upvotes: 1
Reputation: 1
I encountered this issue when trying to build my Android app. My shell and Android Studio were using different node binaries.
I discovered this by running which node
in my zsh shell terminal and in Android Studio's terminal. You can access the terminal in Android Studio with View > Tool Windows > Terminal.
In my case, Android Studio was using Node installed by Brew, while my zsh terminal was using Node managed by NVM. I don't use the Node binary installed by Brew, so I uninstalled it with brew uninstall node
. Android Studio then used the same Node binary as my zsh terminal, and I could then build my Android app.
Upvotes: 0
Reputation: 1801
In case anyone else is struggling after reading the whole internet, for me the answer was to upgrade react-native-svg-transformer
from 1.10 to 1.30. I had already tried things like passing --openssl-legacy-provider
so that might also be necessary as well.
Upvotes: 0
Reputation: 1539
Try running this
NODE_OPTIONS=--openssl-legacy-provider
npm run start:reset
Upvotes: 1
Reputation: 19
Your metro might be probably running somehow. Restart you computer before trying anything fancy
Upvotes: -1
Reputation: 240
Just throwing this out there. If you use watchFolders
in metro.config.js, make sure you remove that key before building! That fixed it for me. It's useful if you are npm linking other packages but obviously eas build will not be able to find those links.
Upvotes: 0
Reputation: 421
Run:
export NODE_OPTIONS=--openssl-legacy-provider
To make connection to openssl
Upvotes: 22
Reputation: 6222
This issue is due to the difference between node version you are currently using for example node version 19 and node version used by the project.
To Solve this issue you need to downgrade or upgrade according to the node version used by project and your current node version.
you have to install node first and then then install nvm (NODE VERSION MANAGER)
.
nvm is a node version manager with which you can install multiple node version
CURRENT | LTS | OLD STABLE | OLD UNSTABLE |
---|---|---|---|
19.2.0 | 18.12.1 | 0.12.18 | 0.11.16 |
19.1.0 | 18.12.0 | 0.12.17 | 0.11.15 |
19.0.1 | 16.18.1 | 0.12.16 | 0.11.14 |
19.0.0 | 16.18.0 | 0.12.15 | 0.11.13 |
18.11.0 | 16.17.1 | 0.12.14 | 0.11.12 |
18.10.0 | 16.17.0 | 0.12.13 | 0.11.11 |
18.9.1 | 16.16.0 | 0.12.12 | 0.11.10 |
18.9.0 | 16.15.1 | 0.12.11 | 0.11.9 |
18.8.0 | 16.15.0 | 0.12.10 | 0.11.8 |
18.7.0 | 16.14.2 | 0.12.9 | 0.11.7 |
18.6.0 | 16.14.1 | 0.12.8 | 0.11.6 |
18.5.0 | 16.14.0 | 0.12.7 | 0.11.5 |
18.4.0 | 16.13.2 | 0.12.6 | 0.11.4 |
18.3.0 | 16.13.1 | 0.12.5 | 0.11.3 |
18.2.0 | 16.13.0 | 0.12.4 | 0.11.2 |
18.1.0 | 14.21.1 | 0.12.3 | 0.11.1 |
18.0.0 | 14.21.0 | 0.12.2 | 0.11.0 |
17.9.1 | 14.20.1 | 0.12.1 | 0.9.12 |
17.9.0 | 14.20.0 | 0.12.0 | 0.9.11 |
17.8.0 | 14.19.3 | 0.10.48 | 0.9.10 |
To Install nvm please follow this Link
After this you can use the following nvm commands
nvm ls
// install specific version of node
nvm install 6.9.2
// set default version of node
nvm alias default 6.9.2
// switch version of node
nvm use 6.9.1
Upvotes: 6
Reputation: 1
I tried every solution on the internet but none of them helped, check if nothing's working then you must be having nodejs and node in your system. You can check on your terminal with node -v
and nodejs -v
Uninstall nodejs
sudo apt-get uninstall nodejs
and you're good to go!
Upvotes: -11
Reputation: 41
The error comes from the node version. So, you will need to downgrade.
npx react-native info - // to see what node version your project uses.
nvm list // to see all available node version
nvm install 16.18.0 // to install the version you want
nvm use 16.18.0 // use the installed version
OR
nvm alias default 16 // use the installed version as DEFAULT
Upvotes: 4
Reputation: 342
Solution which works for me. Try to generate your main.jsbundle file with the below react-native command and verify it in your iOS folder.
1)Delete your pods folder and Podfile.lock file
2)run command
react-native bundle --entry-file='index.js' --bundle-output='./ios/main.jsbundle' --dev=false --platform='ios' --assets-dest='./ios'
3)After that run below command
npm start -- --reset-cache
Upvotes: 1
Reputation: 8726
16.12.0
. If you are using nvm, set default
node version to 16.12.0
. You can use following commandnvm alias default 16.12.0
node_modules
folder. You can use following command:rm -rf node_modules
Upvotes: 2
Reputation: 6257
If you use an older osx version, you may need to add an nvm script to your zshrc file. Here is how to do so:
open ~/.zshrc
.zshrc
file, copy paste the following code:export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion
source ~/.zshrc
Now nvm will work.
Upvotes: 2
Reputation: 585
I am using Expo CLI with Node.js 17 and encountered the same error, and found the hint to the resolution (without downgrading Node.js) from here: https://github.com/facebook/react-native/issues/33107#issuecomment-1042612307
However, instead of using export
I installed cross-env
as devDependency by running the following command: npm i --save-dev cross-env
Then I added the following command against start
script in package.json
under scripts
section.
"start": "cross-env NODE_OPTIONS=--openssl-legacy-provider expo start"
Upvotes: 4
Reputation: 911
First, you have to install the node version manager:
wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash
or:
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash
after installation, (if you are on Linux, close and reopen your terminal and) test it:
nvm -v
then install the node version 16.3.0:
nvm install 16.13.0
and ask the nvm to use this version:
nvm use 16.13.0
Upvotes: 3
Reputation: 649
you can resolve it by downgrading the node js
> nvm list // to see all available node version
> nvm install 16.13.0 // to install the version I wanted
> nvm use 16.13.0 // use the installed version
OR
> nvm alias default 16 // use the installed version as DEFAULT
Upvotes: 47
Reputation: 91
I tried different node versions...same error. Uninstalled and tried new versions of Android Studio...same error. Started brand new projects from scratch...same error. Deleted node_modules and ran npm i...same error.
Here's what did work for me.
Run
npx react-native info
Towards the top of that readout, it should say what Node version you are using. (it told me I was using Node: 17.xx.x in a stray node_modules folder.)
My fix was simply renaming that folder(in case deleting it breaks a different project). Now when I run npx react-native info
it tells me the correct node version(16.13.1) and all my projects are running in the emulator again!
Upvotes: 9
Reputation: 1558
In case, you do the steps of @uzai sindiko and when you try to build, it fails again. And if you close the terminal, and then you check again node version, it says 17.3.1.
Then after you set nvm use 16.13.0
do also nvm uninstall 17.3.1
and then your project will be build.
Thanks
Upvotes: 1
Reputation: 21
check your node version first using nvm list
uninstall the unnecessary version of node using nvm uninstall version
change the version with the version number which is in use.
install the new version of node using nvm install version_number
use the installed version of node using nvm use version_number
. Replace version_number with the version of node you have installed.
Upvotes: 1
Reputation: 431
had the same issue. downgrade to version 16.13.1 from 17.3.0 and it worked great.
Upvotes: 1
Reputation: 41
I experienced the same issue. Seems that the problem is due to version 17.x of Node.js. I solved downgrading to Node.js 16.12.0.
Upvotes: 1
Reputation: 1222
Ran into the same issue with Node.js 17.0.0. To solve it, I downgraded to version 14.18.1, deleted node_modules
and reinstalled.
Upvotes: 109
Reputation: 91
Quick and dirty workaround (worked for me):
Add or update your package.json engines section with something like this to stop trying to build with Node 17.0.x Current, until you resolve the new OpenSSL PKCS8 format in the tls module:
"engines": {
"node": "<17",
"npm": "<8.2"
},
Upvotes: 2