可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试):
问题:
I am running a node application on terminal. Have recently upgraded to node v8.5.0, but am getting this error:
Error: The module '/tidee/tidee-au/packages/tidee-au-server/node_modules/bcrypt/lib/binding/bcrypt_lib.node'
was compiled against a different Node.js version using
NODE_MODULE_VERSION 51. 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`).
at Object.Module._extensions..node (module.js:653:18)
at Module.load (module.js:545:32)
at tryModuleLoad (module.js:508:12)
at Function.Module._load (module.js:500:3)
at Module.require (module.js:568:17)
at require (internal/module.js:11:18)
at Object.<anonymous> (/tidee/tidee-au/packages/tidee-au-server/node_modules/bcrypt/bcrypt.js:6:16)
at Module._compile (module.js:624:30)
at Module._extensions..js (module.js:635:10)
at Object.require.extensions.(anonymous function) [as .js] (/tidee/tidee-au/packages/tidee-au-server/node_modules/babel-register/lib/node.js:152:7)
at Module.load (module.js:545:32)
at tryModuleLoad (module.js:508:12)
at Function.Module._load (module.js:500:3)
at Module.require (module.js:568:17)
at require (internal/module.js:11:18)
at Object.<anonymous> (/tidee/tidee-au/packages/tidee-au-server/server/helpers/encryptPass.js:1:16)
Any idea how to solve this?
回答1:
You need to remove the module folder (bcrypt
) from the node_modules
folder and reinstall it, use the following commands:
$ rm -rf node_modules/bcrypt
$ npm install
// or
$ yarn
回答2:
You have to rebuild the package and tell npm to update it's binary too. Try:
npm rebuild bcrypt --update-binary
@robertklep answered a relative question with this command, look.
Only rebuild haven't solved my problem, this works fine in my application.
Hope it helps!
回答3:
I had the same problem and nothing mentioned here worked for me.
Here is what worked for me:
- Require all dependencies you need in the
main.js
file that is run by electron. (this seemed to be the first important part for me)
- Run
npm i -D electron-rebuild
to add the electron-rebuild package
- Remove the
node-modules
folder, as well as the packages-lock.json
file.
- Run
npm i
to install all modules.
- Run
./node_modules/.bin/electron-rebuild
to rebuild everything
It is very important to run ./node_modules/.bin/electron-rebuild
directly after npm i
otherwise it did not work on my mac.
I hope I could help some frustrated souls.
回答4:
Simply run:
npm uninstall bcrypt
Followed by:
npm install bcrypt
(or npm install
, if bcrypt is declared as dependency in your package.json file)
回答5:
Most likely you have this issue due to the package-lock.json. Somehow it seems to block you from recompiling or rebuilding your dependencies, even if you explicitly run npm rebuild
. I ran all the following to fix it for me:
rm package-lock.json;
rm -rf node_modules;
npm install;
回答6:
Be sure you only have one version of NodeJS installed. Try these two:
node --version
sudo node --version
I initially installed NodeJS from source, but it was the incorrect version and 'upgraded' to the newest version using nvm
, which doesn't remove any previous versions, and only installs the desired version in the /root/.nvm/versions/...
directory. So sudo node
was still pointing to the previous version, whilst node
was pointing to the newer version.
回答7:
you can see this link
to check your node verison right. using
NODE_MODULE_VERSION 51 means that your node version is nodejs v7.x, requires NODE_MODULE_VERSION 57 means you need upgrade your node to v8.x,so you need to upgrade your node. and then you need run npm rebuild
command to rebuild your project
回答8:
I got the same error but I was trying to run a node application using a Docker container.
I fixed it by adding a .dockerignore file to ignore the node_modules directory to make sure that when the docker image builds, it builds the native packages for the image I wanted (Alpine) instead of copying over the node_modules compiled for my host (Debian).
回答9:
Turns out my problem was user-error: make sure the version of node you are using for running is the same that you are using when running an npm install or yarn.
I use NVM for versioning node and was running yarn via a terminal, but my IDE was set to use an older version of node when running and it was throwing the error above. Matching my IDE's version of node in the run config to node --version fixed the issue.
回答10:
I got this error when running my app with systemd:
ExecStart=/usr/local/bin/node /srv/myapp/server.js
But I was using a different version for npm install
in the shell:
$ which node
/home/keith/.nvm/versions/node/v8.9.0/bin/node
If this is your setup, you can either hardcode the node version in the service file or follow a workaround like this one.
回答11:
After trying different things.
This worked.
Delete your node modules folder and run
npm i
回答12:
I faced the same issue with grpc module and in my case, I was using electron and have set a wrong electron version in the env variable "export npm_config_target=1.2.3", setting it to the electron version I am using resolved the issue on my end. Hope this helps someone who set env variables as given here (https://electronjs.org/docs/tutorial/using-native-node-modules#the-npm-way)
回答13:
You could remove bcrypt entirely and install bcryptjs. It is ~30% slower, but has no dependencies, so no pains installing it.
npm i -S bcryptjs && npm uninstall -S bcrypt
We've installed it successfully for our applications. We had issues with bcrypt not compiling on AWS instances for Node v8.x
回答14:
Potentially, inconsistency of the node JS versions is what causes the problem. As stated in the documentation. Be sure to use one of the lts release. E.g. specify this in your Dockerfile:
# Pull lts from docker registry
FROM node:8.12.0
# ...
回答15:
Check the Node version you're using, might be a mismatch between what it is expected.
回答16:
I had the same problem and none of these solutions worked and I don't know why, they worked for me in the past for similar problems.
Anyway to solve the problem I've just manually rebuild the package using node-pre-gyp
cd node_modules/bcrypt
node-pre-gyp rebuild
And everything worked as expected.
Hope this helps
回答17:
I just got this error running kadence the installed "kadence" script checks for nodejs first and only runs node if there is no nodejs. I have the latest version of node linked into my ~/bin directory but nodejs runs an older version that I had forgotten to uninstall but never caused problems until just now.
So people with this problem might check if node and nodejs actually run the same version of node...
回答18:
In my case, I was in my office proxy which was skipping some of the packages. When I came out of my office proxy and tried to do npm install
it worked. Maybe this helps for someone.
But it took me several hours to identify that was the reason.
回答19:
In my case I was running nodejs
instead of node
. Due to nodejs
being installed by the package manager:
# which node
/home/user/.nvm/versions/node/v11.6.0/bin/node
# which nodejs
/usr/bin/nodejs
回答20:
I had a similar problem with robotjs. There were some deprecated code that required node v11, but I had already compiled electron code on v12. So I got basically the same error.
Nothing here worked as I was basically trying to rebuild electron and my other dependencies into node v11 from v12.
Here is what I did (part of this is based on chitzui's answer, credit where credit is due):
- Back up package.json
- completely delete the node_modules folder
- completely delete package_lock.json
- delete package.json (will reinit later)
- Close any open editors and other cmd windows that are in the project's directory.
- run
npm init
to reinit package, then missing data with old backed up package.json
- run
npm i
- fixed :)
Hope this helps.
回答21:
run npm config set python python2.7
and run npm install
again the party is on.
回答22:
you need just run this below commands:
$ rm -rf node_modules
$ rm -rf yarn.lock
$ yarn install
and finally
$ ./node_modules/.bin/electron-rebuild
don't forget to yarn add electron-rebuild
if it doesn't exist in your dependencies.
回答23:
I have hit this error twice in an electron app and it turned out the problem was that some modules need to be used from the main process rather than the render process. The error occurred using pdf2json and also node-canvas. Moving the code that required those modules from index.htm (the render process) to main.js (the main process) fixed the error and the app rebuilt and ran perfectly. This will not fix the problem in all cases but it is the first thing to check if you are writing an electron app and run into this error.
回答24:
None of them worked for me but this:
npm install
npm start