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


142

端末でノードアプリケーションを実行しています。最近ノード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)

これを解決する方法はありますか?


正解をマークしてください
Shanika Ediriweera '30 / 09/30

回答:


119

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

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

7
動作しません。私にとって、問題はzmqパッケージにあり、それを再構築または削除して、npm installing何度も繰り返しても役に立ちません。常に同じ問題。
trusktr

7
@trusktr node_modulesフォルダを完全に削除してみてください:rm -rf node_modules。npmキャッシュをクリア:npm cache clear、package-lock.jsonまたはnpm-shrinkwrap.jsonを削除します。そして、その実行後のみnpm i
alexmac

1
「あなたが何をしているのか知っているといいのですが」といいメッセージをもらいました。キャッシュをクリアしたとき。私はそれほどではありませんが、明らかにあなたはそうです!出来た。
ouflak 2018

する必要はありません/する必要はありません。npm cache clear他のコマンドで
うまくいき

私のために働いた!私の正確なエラーは-「モジュール '/ Users / <username> / Downloads / intro-to-graphql / node_modules / bcrypt / lib / binding / bcrypt_lib .node'は、NODE_MODULE_VERSION 64を使用して別のNode.jsバージョンに対してコンパイルされました。」
通常の

73

私は同じ問題を抱えていて、ここで言及されていることは何もうまくいきませんでした。これが私のために働いたものです:

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

Macで動作しなかった直後に実行することは非常に重要です。./node_modules/.bin/electron-rebuildnpm i

欲求不満な魂を助けたいと思います。


2
electron-rebuildを実行するだけでうまくいきました。私の場合、モジュールを削除して再インストールする必要はありません。
stoefln

1
さて、あなたは幸運なことに@stoeflnを得ました
chitzui

1
私はWindowsを使っていますが、このソリューションもうまくいきました。この問題の原因は何ですか?これはエレクトロンのバグですか?
jbinvnt

@jbinvntはい、それは既知の電子制限ですgithub.com/SimulatedGREG/electron-vue/issues/872
Konstantin Vdovkin

パイプラインまたは任意のコマンドを介してElectron-rebuildのみを実行する方法
吉高

57

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

npm rebuild bcrypt --update-binary

@robertklepは、このコマンドを使用して相対的な疑問に答えを見て

再構築のみで問題は解決しませんでした。これは私のアプリケーションでは問題なく機能します。

それが役に立てば幸い!


1
再構築の目的はバイナリを更新することだと思いましたが、バイナリを更新せずにいつ再構築しますか?
bobmoff

1
@bobmoff再構築のみを使用するのと同じ方法を考えていましたが、ドキュメントではすべてが更新されるとドキュメントに記載されています。だから私は周りを見回して、「-update-binary」がそれを実際に強制し、自然に再構築する方法とそれを変更するように伝える方法でした。
RPichioli

30

単に実行する:

npm uninstall bcrypt

に続く:

npm install bcrypt(またはnpm installbcryptpackage.jsonファイルで依存関係として宣言されている場合)


13

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

ノードのバージョン権を確認します。NODE_MODULE_VERSION 51を使用すると、ノードのバージョンはnodejs v7.xになります。NODE_MODULE_VERSIONが必要57は、ノードをv8.xにアップグレードする必要があるため、ノードをアップグレードする必要があります。次に、npm rebuildコマンドを実行してプロジェクトを再構築する必要があります


3
回答自体はリンクなしで役立つはずです。
Tobias Wilfert

私はダウングレード私の場合は57に67から文句同様の問題だった11/stable8/stable$ snap refresh node --channel=8/stableUbuntuのでは。その後$ npm rebuild
Daniel

この答えは間違っています。NODE_MODULE_VERSION 51を使用してノードバージョンに対してファイルがコンパイルされるNODE_MODULE_VERSION 51ことを意味し.nodeます。また、ユーザーは57を使用してノードバージョンを使用しているため、直接使用できません。ユーザーはコンパイルを再構築する必要があります。
また、

11

ほとんどの場合、package-lock.jsonが原因でこの問題が発生します。どうやら、明示的にを実行した場合でも、依存関係の再コンパイルまたは再構築をブロックしているようですnpm rebuild。私はそれを修正するために次のすべてを実行しました:

rm package-lock.json;
rm -rf node_modules;
npm install;

10

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

node --version
sudo node --version

私は最初にソースからNodeJSをインストールしましたが、バージョンが正しくnvmなかったため、を使用して最新バージョンに「アップグレード」しました。これにより、以前のバージョンは削除されず、目的のバージョンのみが/root/.nvm/versions/...ディレクトリにインストールされます。そのsudo nodeため、以前のバージョンをまだ指していたnodeが、新しいバージョンを指していた。


ああ!なぜ私はこれを考えなかったのですか!facepalmできるように投稿していただきありがとうございます。
ラビリンス

3

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

node_modulesディレクトリを無視する.dockerignoreファイルを追加して修正しました。Dockerイメージのビルド時に、ホスト用にコンパイルされたnode_modules(Debian)をコピーする代わりに、希望するイメージ(Alpine)のネイティブパッケージをビルドするようにしました。 。


私のために働いた...追加:node_modules/andpackage-lock.json
Giovanne Afonso

3

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

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


1

robotjsにも同様の問題がありました。ノードv11を必要とする非推奨のコードがいくつかありましたが、v12ですでにエレクトロンコードをコンパイルしていました。したがって、基本的に同じエラーが発生しました。基本的にelectronと他の依存関係をv12からノードv11に再構築しようとしていたため、ここでは何も機能しませんでした。

ここに私がやったことがあります(これの一部はchitzuiの答えに基づいています、クレジットが支払われるべきクレジット):

  • package.jsonのバックアップ
  • node_modulesフォルダーを完全に削除します
  • package_lock.jsonを完全に削除します
  • package.jsonを削除します(後で再初期化されます)
  • 開いているエディターとプロジェクトのディレクトリにある他のコマンドウィンドウをすべて閉じます。
  • npm initパッケージを再初期化するために実行してから、古いバックアップされたpackage.jsonでデータが欠落している
  • 走る npm i
  • 修繕 :)

お役に立てれば。


1

Electronモジュールの場合、electron-rebuildをインストールします。

Format:
electron-rebuild -o <module_name> -v <electron version>

Example:
electron-rebuild -o myaddon -v 9.0.0-beta.6

現在のディレクトリにインストールしたものと同じバージョンを指定します

標準のnode-gypビルドが64として報告し、その後基本的なelectron-rebuildが76を報告するというこの経験があるかもしれません。正確なバージョンで-vを追加するまでは、実際のバージョン80にぶつかります(9.0.0-betaの場合)。 6)


1

node_modulesフォルダーを削除して実行する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

grpcモジュールで同じ問題に直面し、私の場合、electronを使用していて、env変数「export npm_config_target = 1.2.3」に誤ったelectronバージョンを設定し、使用しているElectronバージョンに設定すると、問題が解決しました私の終わり。これがここに与えられているように環境変数を設定する人を助けることを願っています(https://electronjs.org/docs/tutorial/using-native-node-modules#the-npm-way


0

bcryptを完全に削除して、bcryptjsをインストールできます。30%ほど遅くなりますが、依存関係がないため、インストールに苦労しません。

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

アプリケーション用に正常にインストールしました。Node v8.xのAWSインスタンスでbcryptがコンパイルされない問題がありました


0

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

# Pull lts from docker registry
FROM node:8.12.0

# ...

0

使用しているノードのバージョンを確認してください。予期されているバージョンと一致していない可能性があります。


0

私は同じ問題を抱えていましたが、これらの解決策はどれもうまくいきませんでしたし、理由もわかりません。以前は同じような問題でうまくいきました。

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

cd node_modules/bcrypt
node-pre-gyp rebuild

そして、すべてが期待どおりに機能しました。

お役に立てれば


0

kadenceの実行中にこのエラーが発生しました何nodejsがない場合nodejsのためのインストール「kadence」スクリプトのチェックが最初で唯一のノードが実行されます。〜/ binディレクトリにリンクされている最新バージョンのノードがありますが、nodejsは、アンインストールを忘れていたが、今まで問題を引き起こしていない古いバージョンを実行しています。

したがって、この問題のある人は、nodeとnodejsが実際に同じバージョンのnodeを実行しているかどうかを確認する可能性があります...


0

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

しかし、それが理由だと特定するのに数時間かかりました。


0

私の場合、のnodejs代わりに走っていましたnode。以下のためにnodejsパッケージマネージャによってインストールされています:

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

# which nodejs
/usr/bin/nodejs


0

以下のコマンドを実行するだけです:

$ rm -rf node_modules
$ rm -rf yarn.lock
$ yarn install

そして最後に

$ ./node_modules/.bin/electron-rebuild

yarn add electron-rebuild依存関係に存在しない場合は、忘れないでください。


0

electronアプリでこのエラーに2回ヒットしましたが、レンダリングプロセスではなくメインプロセスから使用する必要があるモジュールがあるという問題が判明しました。エラーは、pdf2jsonおよびnode-canvasを使用して発生しました。これらのモジュールを必要とするコードをindex.htm(レンダリングプロセス)からmain.js(メインプロセス)に移動すると、エラーが修正され、アプリが再構築されて完全に実行されました。これですべてのケースで問題が解決するわけではありませんが、electronアプリを作成していてこのエラーが発生したかどうかを確認するのは最初のことです。


0

ここに私のために働いたものがあります。Electron Jsでループバックノードモジュールを使用していて、この問題に直面しました。多くのことを試した後、私にとってはうまくいきました。

あなたにpackage.jsonの内のファイルのスクリプト次の行を追加します。

  ... 
"scripts": {
        "start": "electron .",
        "rebuild": "electron-rebuild"
    
      },
...

そして、次のコマンドを実行します npm run rebuild

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.