私は長い間ノード9.3.0を使用してきましたが、最近10.12.0に移行しました。 node -v
とnpm -v
を実行すると、すべてがうまくいきました。正しいバージョンを取得します。
Paul-Bergs-Macbook:node paulrberg$ node -v
v10.12.0
Paul-Bergs-Macbook:node paulrberg$ which node
/Users/paulrberg/.nvm/versions/node/v10.12.0/bin/node
Paul-Bergs-Macbook:node paulrberg$ npm -v
6.4.1
Paul-Bergs-Macbook:node paulrberg$ which npm
/Users/paulrberg/.nvm/versions/node/v10.12.0/bin/npm
ただし、npmコマンドを実行しようとすると、古いバージョンが使用されます。あれは:
Paul-Bergs-Macbook:node paulrberg$ npm i truffle -g
/Users/paulrberg/.nvm/versions/node/v9.3.0/bin/truffle -> /Users/paulrberg/.nvm/versions/node/v9.3.0/lib/node_modules/truffle/build/cli.bundled.js
+ [email protected]
added 81 packages from 311 contributors in 1.715s
そして:
npm list -g --depth=0
/Users/paulrberg/.nvm/versions/node/v9.3.0/lib
└── [email protected]
これがまだ最後のバージョンを指しているbashコードであるかどうかはわかりませんが、その証拠を見つけることができないようです。 env
を実行して9.3.0
環境変数をチェックしても、結果は得られません。
私がこれまでにしたこと:
nvm uninstall 9.3.0
でノード9.3.0を削除しますnvm reinstall-with-packages
~/.nvmrc
を削除し、その後10.12.0
を設定しました数時間の苦痛なUnixデバッグの後、問題はnpm config
にプレフィックスを設定したことであることに気付きました。
prefix = "/Users/paulrberg/.nvm/versions/node/v9.3.0"
これを修正するには、次の手順でプレフィックスの設定を解除してください。
npm config rm prefix
これは 言及 ですが、nvmドキュメントでは必ずしも輝いているとは限りません
〜/ .npmrcファイルがある場合は、プレフィックス設定が含まれていないことを確認してください(nvmと互換性がありません)
nvm reinstall-packages
を実行する必要があるようです
https://github.com/creationix/nvm#migrating-global-packages-while-installing
それは言う
インストール中のグローバルパッケージの移行新しいバージョンのNode.jsをインストールし、npmパッケージを以前のバージョンから移行する場合:
nvm install node --reinstall-packages-from=node
これは、最初に「nvm version node」を使用して、パッケージの移行元の現在のバージョンを識別します。次に、リモートサーバーからインストールする新しいバージョンを解決してインストールします。最後に、「nvmreinstall-packages」を実行して、以前のバージョンのNodeから新しいバージョンにnpmパッケージを再インストールします。
次のように、特定のバージョンのNode)からnpmパッケージをインストールして移行することもできます。
nvm install 6 --reinstall-packages-from=5
nvm install v4.2 --reinstall-packages-from=iojs
もう1つの「解決策」は、グローバルパッケージを使用しないことです。特にnvmを使用していて、グローバルパッケージが「現在の」バージョンのものであるかどうかを確認できない場合は、ローカルにインストールし、npx
を使用してローカルコマンドを実行することをお勧めします。
truffleは、npm install
を実行するとtruffle
コマンドを./node_modules/.binにインストールするため、truffle
の代わりにnpx truffle
を実行してグローバルを実行できます。 1
編集:
確認すべきもう1つの点は、node -v
とnvm current
が必ずしも同じバージョンを報告するとは限らないことです。
nvm current
がv9.3を報告してくれるのだろうか?
ああ、うん、私のマシンでは、node -v
レポートとは別の場所にグローバルにトリュフをインストールできます
> node -v
v9.5.0
> nvm current
system
> nvm use v8
Now using node v8.4.0 (npm v5.3.0)
> node -v
v8.4.0
> nvm current
v8.4.0
> npm install -g truffle
/Users/pauldambra/.nvm/versions/node/v8.4.0/bin/truffle -> /Users/pauldambra/.nvm/versions/node/v8.4.0/lib/node_modules/truffle/build/cli.bundled.js
+ [email protected]
added 81 packages in 4.364s
したがって、nvm use v10
コマンドが欠落している可能性があります
より永続的な解決策は このセクション サポートドキュメントからだと思います。
インストール中のファイルからのデフォルトのグローバルパッケージ
新しいバージョンをインストールするたびにインストールするデフォルトパッケージのリストがある場合は、それもサポートしています。パッケージ名を1行に1つずつ、ファイル$ NVM_DIR/default-packagesに追加するだけです。コマンドラインで、npmがパッケージ引数として受け入れるものなら何でも追加できます。