端末でノードアプリケーションを実行しています。最近ノード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)
どのようにこれを解決するのですか?
node_modules
フォルダからモジュールフォルダ(bcrypt
)を削除して再インストールする必要があります。次のコマンドを使用します。
$ rm -rf node_modules/bcrypt
$ npm install
// or
$ yarn
あなたはパッケージを再構築する必要がありますそしてnpmにそのバイナリも更新するように伝えます。試してください:
npm rebuild bcrypt --update-binary
@robertklepはこのコマンドで相対的な質問に答えました、 look 。
再構築だけが私の問題を解決しなかった、これは私のアプリケーションでうまく働きます。
それが役に立てば幸い!
私は同じ問題を抱えていました、そしてnothingは私のために働きました。これは私のために働いたものです:
main.js
ファイルに必要なすべての依存関係を要求してください。 (これは私にとって最初の重要な部分のようです)npm i -D electron-rebuild
を実行して electron-rebuild パッケージを追加しますnode-modules
ファイルとpackages-lock.json
フォルダーを削除します。npm i
を実行してください。./node_modules/.bin/electron-rebuild
を実行してすべてを再構築します./node_modules/.bin/electron-rebuild
の直後にnpm i
を実行するのは、非常に重要なです。そうしなければ私のMacではうまくいきませんでした。
私はいくつかのフラストレートした魂を助けることができると思います。
単に実行します。
npm uninstall bcrypt
に続く:
npm install bcrypt
(またはnpm install
、bcryptがあなたのpackage.jsonの依存関係として宣言されている場合ファイル)
おそらくあなたはpackage-lock.jsonが原因でこの問題があります。どういうわけか、明示的にnpm rebuild
を実行したとしても、依存関係の再コンパイルや再構築を妨げるようです。私はそれを修正するために以下のすべてを実行しました。
rm package-lock.json;
rm -rf node_modules;
npm install;
あなたはこの リンクを見ることができます
あなたのノードのバージョンを正しくチェックします。 NODE_MODULE_VERSION 51を使用すると、ノードのバージョンはnodejs v7.xであることを意味します。NODE_MODULE_VERSION57を使用すると、ノードをv8.xにアップグレードする必要があるので、ノードをアップグレードする必要があります。そして、あなたはあなたのプロジェクトを再構築するためにnpm rebuild
コマンドを実行する必要があります
npm rebuild bcrypt --update-binary
私は同じ約束をしたが違うパッケージを使っています、私はこのコードを実行し、それを扱います
同じエラーが発生しましたが、Dockerコンテナを使用してノードアプリケーションを実行しようとしていました。
私のホスト用にコンパイルされたnode_modulesをコピーするのではなく、dockerイメージがビルドされたときに、欲しいイメージ(Alpine)用のネイティブパッケージを確実にビルドするようにする。
NodeJSの1つのバージョンのみがインストールされていることを確認してください。次の2つを試してください。
node --version
Sudo node --version
最初にソースからNodeJSをインストールしましたが、それは間違ったバージョンであり、nvm
を使用して最新バージョンに「アップグレード」されました。これは以前のバージョンを削除せず、/root/.nvm/versions/...
ディレクトリ。したがって、Sudo node
は以前のバージョンを指していましたが、node
は新しいバージョンを指していました。
私の場合、私は自分のオフィスの代理人で、いくつかのパッケージをスキップしていました。私が自分のオフィスの代理人から出て、npm install
をやろうとしたとき、それはうまくいきました。多分これは誰かに役立ちます。
しかし、それがその理由であることを確認するのに数時間かかりました。
別のことを試した後。これはうまくいった。
ノードモジュールフォルダを削除して実行します。
npm i
私はgrpcモジュールと同じ問題に直面しました、そして私の場合、私は電子を使用していて、私が使用している電子バージョンにそれを設定する環境変数 "export npm_config_target = 1.2.3"で間違った電子バージョンを設定しました私の終わりこれがここで与えられているようにenv変数を設定する誰かに役立つことを願っています( https://electronjs.org/docs/tutorial/using-native-node-modules#the-npm-way )
あなたが使用しているNodeのバージョンを確認してください。
私はrobotjsで同様の問題を抱えていました。ノードv11を必要とする廃止予定のコードがいくつかありましたが、私はすでにv12で電子コードをコンパイルしました。だから私は基本的に同じエラーを得ました。私が基本的にv12からnode v11に電子と他の依存関係を再構築しようとしていたので、ここでは何も機能しませんでした。
これが私がしたことです(これの一部はchitzuiの答えに基づいています、クレジットは支払期日です)。
npm init
を実行してパッケージを再起動します。その後、古いバックアップpackage.jsonでデータが失われますnpm i
を実行お役に立てれば。
私は同じ問題を抱えていたし、これらの解決策のどれもうまくいかなかったし、その理由もわからない。過去に私が同じような問題に対してうまくいっていた。
とにかく問題を解決するために私はただ手動でnode-pre-gypを使ってパッケージを再構築しました
cd node_modules/bcrypt
node-pre-gyp rebuild
そして、すべてが期待通りに動作しました。
お役に立てれば
あなたは完全にbcryptを削除してbcryptjsをインストールすることができます。 30%ほど遅くなりますが、依存関係はありませんので、インストールしても問題ありません。
npm i -S bcryptjs && npm uninstall -S bcrypt
私たちは私たちのアプリケーションのためにそれをうまくインストールしました。 Node v8.xのAWSインスタンスでbcryptがコンパイルされないという問題がありました。
それらのどれも私のために働いていませんでしたが、これは:
npm install
npm start
私の問題はユーザーエラーでした:実行に使用しているノードのバージョンが、npm installまたはyarnの実行時に使用しているものと同じであることを確認してください。
ノードのバージョン管理にNVMを使用し、ターミナルを介してyarnを実行していましたが、実行時にIDEが古いバージョンのノードを使用するように設定され、上記のエラーがスローされました。実行構成内のIDEのノードのバージョンをnode --versionに一致させると、問題が修正されました。
インストールされた "kadence"スクリプトが最初にnodejsをチェックし、nodejsがない場合にのみnodeを実行します kadence 。私は〜/ binディレクトリにリンクされた最新バージョンのnodeを持っていますが、nodejsは私がアンインストールするのを忘れていたが今まで問題を起こさなかった古いバージョンを実行します。
そのため、この問題を抱えている人はnodeとnodejsが実際に同じバージョンのnodeを実行しているかどうかをチェックするかもしれません...
私の場合、私はnodejs
の代わりにnode
を実行していました。 nodejs
がパッケージマネージャによってインストールされているため。
# which node
/home/user/.nvm/versions/node/v11.6.0/bin/node
# which nodejs
/usr/bin/nodejs
npm config set python python2.7
を実行し、再度パーティーが開催されているnpm install
を実行します。
Systemdでアプリを実行すると、このエラーが発生しました。
ExecStart=/usr/local/bin/node /srv/myapp/server.js
しかし、シェルではnpm install
に異なるバージョンを使用していました。
$ which node
/home/keith/.nvm/versions/node/v8.9.0/bin/node
これがあなたの設定であるなら、あなたはサービスファイルでノードバージョンをハードコードするか、またはこのような 回避策に従うことができます 。
潜在的に、ノードのJSバージョンの不一致が問題の原因です。 ドキュメントに記載されているように 。必ずltsリリースを使用してください。例えば。 Dockerfileでこれを指定します。
# Pull lts from docker registry
FROM node:8.12.0
# ...