web-dev-qa-db-ja.com

ノード - NODE_MODULE_VERSION 51を使用して、異なるNode.jsバージョンに対してコンパイルされました。

端末でノードアプリケーションを実行しています。最近ノードv8.5.0にアップグレードしましたが、このエラーが発生しています。

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)

どのようにこれを解決するのですか?

69
JoeTidee

node_modulesフォルダからモジュールフォルダ(bcrypt)を削除して再インストールする必要があります。次のコマンドを使用します。

$ rm -rf node_modules/bcrypt
$ npm install
// or
$ yarn
63
alexmac

あなたはパッケージを再構築する必要がありますそしてnpmにそのバイナリも更新するように伝えます。試してください:

npm rebuild bcrypt --update-binary

@robertklepはこのコマンドで相対的な質問に答えました、 look

再構築だけが私の問題を解決しなかった、これは私のアプリケーションでうまく働きます。

それが役に立てば幸い!

34
RPichioli

私は同じ問題を抱えていました、そしてnothingは私のために働きました。これは私のために働いたものです:

  1. Electronによって実行されるmain.jsファイルに必要なすべての依存関係を要求してください。 (これは私にとって最初の重要な部分のようです)
  2. npm i -D electron-rebuildを実行して electron-rebuild パッケージを追加します
  3. node-modulesファイルとpackages-lock.jsonフォルダーを削除します。
  4. すべてのモジュールをインストールするためにnpm iを実行してください。
  5. ./node_modules/.bin/electron-rebuildを実行してすべてを再構築します

./node_modules/.bin/electron-rebuildの直後にnpm iを実行するのは、非常に重要なです。そうしなければ私のMacではうまくいきませんでした。

私はいくつかのフラストレートした魂を助けることができると思います。

27
chitzui

単に実行します。

npm uninstall bcrypt

に続く:

npm install bcrypt(またはnpm installbcryptがあなたのpackage.jsonの依存関係として宣言されている場合ファイル)

14
Frosty Z

おそらくあなたはpackage-lock.jsonが原因でこの問題があります。どういうわけか、明示的にnpm rebuildを実行したとしても、依存関係の再コンパイルや再構築を妨げるようです。私はそれを修正するために以下のすべてを実行しました。

rm package-lock.json;
rm -rf node_modules;
npm install;
10
smets.kevin

あなたはこの リンクを見ることができます

あなたのノードのバージョンを正しくチェックします。 NODE_MODULE_VERSION 51を使用すると、ノードのバージョンはnodejs v7.xであることを意味します。NODE_MODULE_VERSION57を使用すると、ノードをv8.xにアップグレードする必要があるので、ノードをアップグレードする必要があります。そして、あなたはあなたのプロジェクトを再構築するためにnpm rebuildコマンドを実行する必要があります

7
liming gao
npm rebuild bcrypt --update-binary

私は同じ約束をしたが違うパッケージを使っています、私はこのコードを実行し、それを扱います

4
柴劲松

同じエラーが発生しましたが、Dockerコンテナを使用してノードアプリケーションを実行しようとしていました。

私のホスト用にコンパイルされたnode_modulesをコピーするのではなく、dockerイメージがビルドされたときに、欲しいイメージ(Alpine)用のネイティブパッケージを確実にビルドするようにする。

3
Matt

NodeJSの1つのバージョンのみがインストールされていることを確認してください。次の2つを試してください。

node --version
Sudo node --version

最初にソースからNodeJSをインストールしましたが、それは間違ったバージョンであり、nvmを使用して最新バージョンに「アップグレード」されました。これは以前のバージョンを削除せず、/root/.nvm/versions/...ディレクトリ。したがって、Sudo nodeは以前のバージョンを指していましたが、nodeは新しいバージョンを指していました。

3
Barkles

私の場合、私は自分のオフィスの代理人で、いくつかのパッケージをスキップしていました。私が自分のオフィスの代理人から出て、npm installをやろうとしたとき、それはうまくいきました。多分これは誰かに役立ちます。

しかし、それがその理由であることを確認するのに数時間かかりました。

0

別のことを試した後。これはうまくいった。

ノードモジュールフォルダを削除して実行します。

npm i
0
Ankit Pandey

私はgrpcモジュールと同じ問題に直面しました、そして私の場合、私は電子を使用していて、私が使用している電子バージョンにそれを設定する環境変数 "export npm_config_target = 1.2.3"で間違った電子バージョンを設定しました私の終わりこれがここで与えられているようにenv変数を設定する誰かに役立つことを願っています( https://electronjs.org/docs/tutorial/using-native-node-modules#the-npm-way

0
kohl

あなたが使用しているNodeのバージョンを確認してください。

0
cjjenkinson

私はrobotjsで同様の問題を抱えていました。ノードv11を必要とする廃止予定のコードがいくつかありましたが、私はすでにv12で電子コードをコンパイルしました。だから私は基本的に同じエラーを得ました。私が基本的にv12からnode v11に電子と他の依存関係を再構築しようとしていたので、ここでは何も機能しませんでした。

これが私がしたことです(これの一部はchitzuiの答えに基づいています、クレジットは支払期日です)。

  • Package.jsonをバックアップする
  • node_modulesフォルダを完全に削除します。
  • package_lock.jsonを完全に削除します
  • package.jsonを削除します(後で再起動します)
  • プロジェクトのディレクトリにある開いているエディタやその他のcmdウィンドウを閉じます。
  • npm initを実行してパッケージを再起動します。その後、古いバックアップpackage.jsonでデータが失われます
  • npm iを実行
  • 一定 :)

お役に立てれば。

0
AirFusion

私は同じ問題を抱えていたし、これらの解決策のどれもうまくいかなかったし、その理由もわからない。過去に私が同じような問題に対してうまくいっていた。

とにかく問題を解決するために私はただ手動でnode-pre-gypを使ってパッケージを再構築しました

cd node_modules/bcrypt
node-pre-gyp rebuild

そして、すべてが期待通りに動作しました。

お役に立てれば

0
wezzy

あなたは完全にbcryptを削除してbcryptjsをインストールすることができます。 30%ほど遅くなりますが、依存関係はありませんので、インストールしても問題ありません。

npm i -S bcryptjs && npm uninstall -S bcrypt

私たちは私たちのアプリケーションのためにそれをうまくインストールしました。 Node v8.xのAWSインスタンスでbcryptがコンパイルされないという問題がありました。

0
Daniel N.

それらのどれも私のために働いていませんでしたが、これは:

npm install 
npm start
0
Oguz

私の問題はユーザーエラーでした:実行に使用しているノードのバージョンが、npm installまたはyarnの実行時に使用しているものと同じであることを確認してください。

ノードのバージョン管理にNVMを使用し、ターミナルを介してyarnを実行していましたが、実行時にIDEが古いバージョンのノードを使用するように設定され、上記のエラーがスローされました。実行構成内のIDEのノードのバージョンをnode --versionに一致させると、問題が修正されました。

0
Craig Odell

インストールされた "kadence"スクリプトが最初にnodejsをチェックし、nodejsがない場合にのみnodeを実行します kadence 。私は〜/ binディレクトリにリンクされた最新バージョンのnodeを持っていますが、nodejsは私がアンインストールするのを忘れていたが今まで問題を起こさなかった古いバージョンを実行します。

そのため、この問題を抱えている人はnodeとnodejsが実際に同じバージョンのnodeを実行しているかどうかをチェックするかもしれません...

0
Bill Burdick

私の場合、私はnodejsの代わりにnodeを実行していました。 nodejsがパッケージマネージャによってインストールされているため。

# which node
/home/user/.nvm/versions/node/v11.6.0/bin/node

# which nodejs
/usr/bin/nodejs
0

npm config set python python2.7を実行し、再度パーティーが開催されているnpm installを実行します。

0

Systemdでアプリを実行すると、このエラーが発生しました。

ExecStart=/usr/local/bin/node /srv/myapp/server.js

しかし、シェルではnpm installに異なるバージョンを使用していました。

$ which node
/home/keith/.nvm/versions/node/v8.9.0/bin/node

これがあなたの設定であるなら、あなたはサービスファイルでノードバージョンをハードコードするか、またはこのような 回避策に従うことができます

0
Keith

潜在的に、ノードのJSバージョンの不一致が問題の原因です。 ドキュメントに記載されているように 。必ずltsリリースを使用してください。例えば。 Dockerfileでこれを指定します。

# Pull lts from docker registry
FROM node:8.12.0

# ...
0
kmos.w