If you're getting this kind of error when running Node.js programs with binary dependencies that don't support M1 yet, e.g.:
$ yarn test
dyld[51175]: missing symbol called
dyld[51176]: missing symbol called
tl;dr: (Re)install a x64 build of Node.js.
-
Start a new shell using Rosetta2
$ arch -x86_64 zsh
-
In that shell, reinstall the
x64
version of Node.js$ nvm use system $ nvm cache clear $ nvm uninstall 16 # or the version you need $ nvm install 16 # or the version you need $ nvm use 16 # or the version you need
-
Still in that shell, reinstall and build npm dependencies from scratch
$ rm -rf node_modules $ yarn cache clean $ yarn install
-
Whenever you come back to your project (e.g. after restarting), don't forget to select that same version of Node.js!
$ nvm use 16 # or the one you installed in step 2
If you still see the error:
-
Try (re)installing your dependencies with
npm install
instead ofyarn install
. -
It could be that the
node
command is not linked tonvm
.- To check that, run
nvm use 16; nvm ls
and check that the little arrow (->
) targetsv16
. - If it targets
system
, you may want to uninstall any other installation ofnode
(e.g.which node; brew uninstall node
), then retry the whole procedure.
- To check that, run
Worked after a few tinkers here and there. Absolutely lovely!
random question: wouldn't this affect M1 dependent libraries? as in, would I ever need to do this the other way around, where I uninstall and reinstall M1's build of Node?