'Cannot read properties of undefined (reading 'transformFile') at Bundler.transformFile
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:
- node: 17.0.0
- npx: 8.1.0
- react-native-cli: 2.0.1
Solution 1:[1]
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.
Solution 2:[2]
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
Solution 3:[3]
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"
},
Solution 4:[4]
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!
Solution 5:[5]
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
Solution 6:[6]
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"
Solution 7:[7]
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.
Solution 8:[8]
had the same issue. downgrade to version 16.13.1 from 17.3.0 and it worked great.
Solution 9:[9]
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.
Solution 10:[10]
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
Solution 11:[11]
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:
- in your terminal, type
open ~/.zshrc
- in your
.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
- go back to your terminal and run
source ~/.zshrc
Now nvm will work.
Solution 12:[12]
- Use node version
16.12.0
. If you are using nvm, set default node version to16.12.0
. You can use following command
nvm alias default 16.12.0
- Remove
node_modules
folder. You can use following command:
rm -rf node_modules
- Run the android run command again
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow