How can I install a Node.js version using NODE_MODULE_VERSION 46? I keep running into a NODE_MODULE_VERSION mismatch, and recompiling hasn't helped so switching node versions might be easier.
Basically, I keep coming across this:
Warning: The module '/home/cwaugh/workspaces/myproject/build/Release/addon.node'
was compiled against a different Node.js version using
NODE_MODULE_VERSION 46. This version of Node.js requires
NODE_MODULE_VERSION 57. Please try re-compiling or re-installing
the module (for instance, using `npm rebuild` or `npm install`). Use --force to continue.
So far, I've tried using n to change to different versions (one of my dependencies requires 4.9.1 or below), but that doesn't seem to change the NODE_MODULE_VERSION as recognized by the warning.
I've also tried recompiling:
I've tried deleting node_modules and running npm install again. (this error looks like it's coming from the project root, but it never worked for anything in the node_modules folder either)
node-gyp configure --target=4.9.1 && node-gyp build --target=4.9.1. I got the idea from here, and hoped I'd have better luck than mxcd.
node-pre-gyp rebuild. I saw this, and thought it might work for me.
This works on another, older computer running a vagrant image. Unfortunately, vagrant isn't working on the new computer either, so I've been trying from scratch. Sometimes, I wonder if it's because I'm using Ubuntu 18.04. The server's can't seem to go past 16.04 when they run our docker image.
I GOT IT!
It turns out I was getting different versions from node and nodejs
$ node --version
v4.9.1
$ nodejs --version
v8.10.0
I upgrade to node v8.10.0, redo everything, and the error's gone!
sudo npm install -g n
sudo n 8.10.0
rm -rf node_modules
npm install
node-gyp clean
node-gyp configure
node-gyp build
grunt build
grunt start
# No more NODE_MODULE_VERSION error
I tried uninstalling nodejs (since this it's been replaced by just "node"), but node-grunt-cli requires it. I'm guessing that grunt uses nodejs instead of node to check its version, causing the error. The Ubuntu repositories have Grunt v0.4.5, while Grunt stable is at v1.0.3, so it's possible a newer version of grunt would also solve this problem.
The solution didn't work for me since I had just one node version (10).
What was happening in my project, was that the package.json was pulled from the remote repository with an old version package.
At the moment of installing node modules locally (using yarn), it would download up-to-date dependencies, creating incompatibility.
After trying several solutions, what finally worked for me was picking the specific package that was giving me headache (login-funcs-nodejs) and run:yarn upgrade login-funcs-nodejs --latest
I'm using nvm on my Terminal and successfully installed node 10.2.1, which also installed npm 6.1.0. However, when I go to my VS Code editor, it gives me warnings in the integrated terminal for:
npm WARN npm npm does not support Node.js v10.2.1
npm WARN npm You should probably upgrade to a newer version of node as we
npm WARN npm can't make any promises that npm will work with this version.
npm WARN npm Supported releases of Node.js are the latest release of 4,6, 7, 8, 9.
Turns out, it is actually using npm 5.5.1 (npm -v).
I check to see what's up with that and tried to dig further and eventually used: which npm on both integrated terminal and Mac's CLI.
Mac's Terminal shows:
/Users/Aiz/.nvm/versions/node/v10.2.1/bin/npm
VS Code's Terminal shows:
/usr/local/bin/npm. Which is interesting, because if you do which node in this terminal, it results in the appropriate /Users/Aiz/.nvm/versions/node/v10.2.1/bin/node.
I'm not sure how to get my VS Code terminal to point to the appropriate npm install through nvm. Not sure if it helps, but I checked npm get prefix and npm -g bin to find /Users/Aiz/.nvm/versions/node/v10.2.1. The only difference I'm finding is where each terminal is using npm from.
I ended up looking through VS Code issues on GitHub and came across something relevant to NVM and node issues. It fixed my issue since the underlying cause was the same.
Essentially what happened is that I had a global install of node before that I removed prior to using NVM but hadn't removed my global install of npm. This was causing conflicts in VS Code's terminal (not Mac's terminal). In order to fix this, you essentially have to find the symlink for which npm and remove the node_modules and npm associated recursively.
Here's the link you'll need: https://github.com/Microsoft/vscode-docs/blob/master/docs/editor/integrated-terminal.md#why-is-nvm-complaining-about-a-prefix-option-when-the-integrated-terminal-is-launched.
Don't forget to restart your editor after.
Another solution is to implement this. https://medium.com/#kinduff/automatic-version-switch-for-nvm-ff9e00ae67f3
Basically, nvm will check for a .nvmrc and switch or default each time you go to a new directory in shell.
It does have a dependency on zsh.
The fix for me on Ubuntu:
A.) sudo apt-get remove nodejs npm
B.) Removed lines in my .bashrc that added the npm package directory to the path.
C.) Restart VS Code.
I doubt step A is necessary. But B and C certainly are.
When I do a npm -v I see that I am still on 5.6.0. And keep getting prompts to do a npm i npm.
But I've done a sudo npm install npm#latest -g and double checked with a npm outdated -g --depth=0 to see that my global npm is at the latest already (6.0.0).
How do I resolve this conflict? Is the npm I'm using the latest or is it still the old one? Is it because my global is linked incorrectly or something?
Try closing the Terminal - once you open it again it should work, worked for me well.
*IvanD wrote this solution in a comment to the original post, I thought it's worth an answer post.
I can 100% vouch this works.
I got this from someone who teaches node.js.
Give NVM (Node Version Manager) a try. Do the commands in the following ordrer:
curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.11/install.sh | bash
command -v nvm
nvm install node
finally confirm that the update was successful
npm -v
Let's do a better solution if all of the mention methods not help you:
You need to install nvm (Node Version Manager)
After that just run:
nvm install 14
list your versions to see is version installed
nvm ls
and you will get list like this:
v10.2.0
v12.18.3
-> v14.10.0
system
default -> 14.10.0 (-> v14.10.0)
node -> stable (-> v14.10.0) (default)
stable -> 14.10 (-> v14.10.0) (default)
iojs -> N/A (default)
unstable -> N/A (default)
lts/* -> lts/erbium (-> v12.18.3)
lts/argon -> v4.9.1 (-> N/A)
lts/boron -> v6.17.1 (-> N/A)
lts/carbon -> v8.17.0 (-> N/A)
lts/dubnium -> v10.22.0 (-> N/A)
lts/erbium -> v12.18.3
Switch default version like this:
nvm alias default 14.10.0
And check:
node -v
If print v14.10.0 you are ready to rock, if not:
nvm use 14
and check again.
This need to work like a charm and you will be happy.
Check your /usr/local/lib folder. I had the same problem and a node_modules folder in here. After removing it and rerunning [sudo] npm install npm#latest -g it showed and used the correct version.
sudo npm install -g n
If you want latest stable version
sudo n stable
If you want the latest version
sudo n latest
Then restart computer
I had this issue today with Node installer node-v10.16.0-x64.msi. Even after installing it I got the node version from npm -v as 3.10... and my react app would fail to start :(
It seems that node creates a folder in APPDATA at %AppData%\Roaming\npm
There was an old npm.exe lying there and this was in my Windows Path at user level. The user level Path overrides the system level Path where the new installer had added its path. The user override caused the new npm to not be found. Solution: Shift-Delete %AppData%\Roaming\npm ! :D Remove and reinstall with node-v10.16.0-x64.msi
Now npm -v gives 6.9.0!
If you have tried all the mentioned approach like :-
sudo npm install -g n
sudo n stable
or
sudo npm install npm#latest -g
still npm -v showing you the older version, once try to close your terminal and open a new one and check.
I found this command line that worked for me.
Update from version 12.18 to the latest version 15.2 correctly.
I hope this is useful:
nvm install node --reinstall-packages-from=node
I think your question is replecated and already has an answer.
First, The LTS and current version of NPM is 5.6.0 for both Node 8.11.1 (LTS) and Node 10.0.0 (Latest current version) according to the official documentation.
Otherwise, sudo npm install npm#latest -g should install the latest version NPM globally.
Search for a node_modules folder in your home directory, rename it or delete it, then try again.
First uninstall your installed nodejs from Control Panel\All Control Panel Items\Programs and Features.
Delete nodejs folder from the Program Files (x86) folder.
Now install new version and check it once.
Though this is an old question and the answer might not be relevant but I found myself into such situation many time, sometimes restarting the server is not a solution because other process will get effected. So you need to refresh the terminal without actually restarting the server and for that you may run exec bash and that will certainly help.
I was facing the same error today.Updated npm version does not reflect.
This is how I resolved it.
A lot of post suggested to use the command npm cache clean --f. But, it did not work for me. Hence, I deleted the "npm" and "npm-cache" folders from the location C:\Users\SearchYourUserName\AppData\Roaming
Uninstalled the existing node.
Re-Installed node version v10.x.x. I downloaded the node-v10.22.1-x64.msi file from https://nodejs.org/dist/latest-v10.x/ and installed it.
Then checked the npm version. It had worked.
Actually this could be happening due to mistakes like you installing packages using yarn ex:
// update the version number in package.json then
yarn install
and trying to run scripts using npm like
npm run start
Actually I did this mistake.
So make sure to use either yarn or npm, but not both.
I faced a similar issue. I had node v14.15.4 installed on ubuntu 18, but when i used node -v it showed v11.0.0.
To check all the node versions available on your system using nvm, use
nvm ls
To set the newly installed node version as the default, use
nvm alias default <version>
Then, just close the terminal and open a new terminal to check the node version.
Problem summary
npm -v # 6.xx
npm install npm#latest -g
npm -v # still the same, but should be 7.xx
Solution based on the answer of fypnlp.
curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.11/install.sh | bash
The terminal now wants to configure some ~/.zshrc file which I don't have on my Mac yet. So let’s create it
nano ~/.zshrc
and paste
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"
Now restart the terminal and run
command -v nvm # should return "nvm"
nvm install node
npm -v # now it’s 7.xx yay!
I have this same symptom but none of the answers helped and I finally found the issue.
It may not be exactly the same as the OP's but I think it is along the same lines. #Kelvin Zhao's solution of un-installing and re-installing worked for him but not for me so this might be useful for others.
My issue ended up being that I use brew and (I can't remember how exactly) but I seem to be have an old version in the brew Celler.
Brew didn't know about it, or couldn't tell me as I do a brew uninstall node and it says its doesn't exist.
When I run node -v or npm -v I get the old versions.
I uninstalled and reinstalled using brew and npm and sudo npm etc didn't do it. it showed the correct versions being installed but node -v still showed the old.
Turns out there is a version in my /usr/local/Celler directory named node#14.
So running brew uninstall node#14 got rid of that and now node -v doesn't work anymore.
Now re-installing node works. brew install node
More info for further details for those interested.
I wanted to find out where I still had node installed so I did echo $PATH as it had to be somewhere in the path else node -v wouldn't be recognised.
Turns out I had /usr/local/opt/node#14 in my path (which linked to /usr/local/Celler/node#14)
That is how I found it.
And now I think I remember how it got there. I'm 90% sure that I did an upgrade of node and brew asked what to do with the old version and I think I said to keep it.
And that was my mistake that lead me here (and where I think OP's situation differs)
In my case, I wanted to use Version 18 and it was showing 16. I'm using homebrew on my mac and the command that worked for me was the following:
brew uninstall node#16
And voila the version that was showing after is 18.
I had issue with VS Code when I did nvm alias in its own terminal, even after ran alias command, the version kept switching back to old version even I open a new terminal within the VS Code. But as stupid as it sounds, close and reopen the vscode for me worked, after I set the version in an independent terminal.
When I try to upgrade aurelia-cli from 0.21.0 to 0.23.0 on Mac OS X 10.11.6, au -v displays the version as 0.21.0 instead of 0.23.0. I even tried the following, to no avail.
npm uninstall aurelia-cli -g
npm cache clean
npm install aurelia-cli -g
au -v
0.21.0
npm outdated
Package Current Wanted Latest
aurelia-cli 0.21.0 0.23.0 0.23.0
There's a few things you'll need to do. First, and based on your comments, you may have already done this: you need to run npm install aurelia-cli --save-dev. This will update the local version of the Aurelia CLI. Each Aurelia project gets its own local version of the CLI so that upgrading your global version of the CLI won't magically break something in a project. This is especially important currently with the CLI in alpha and thus the possibility of breaking changes being somewhat likely.
If you have already done this and you're still seeing 0.21.0 when you run au -v, then run rm -rf node_modules in the project directory and then npm install. Sometimes npm can be a pain in the butt.
As you are moving from v0.21.0 of the CLI to v0.23.0, you will need to follow the instructions for updating your aurelia.json file found here. These instructions are unrelated to the problem you're having, but you need to be aware of them.
I hope this helps!
I was working through the Thinkster Angular/Firebase tutorial and in the installation process I got to the part where I needed to install grunt-cli with this command in the terminal:
npm install -g bower grunt-cli
and got this error:
lodash#<3.0.0 is no longer maintained. Upgrade to lodash#^3.0.0.
How do I upgrade my lodash?
This is probably because of the dependency chain. I guess grunt is still stocking to the older version of lodash. I think you should be fine as long as grunt is supporting it.
You find more info on this at https://github.com/Azure/azure-mobile-apps-js-client/issues/20