npm更新チェックに失敗しました


14

私は実際にubuntu 17.04にnpmとともにnodejsをインストールしようとしていました。nodejs.orgからLinuxバージョンをダウンロードし、nodeとnodejsのソフトリンクを作成しました。nodejsのバージョンを確認すると、インストールされているバージョンが表示され、問題ありません。

今、私はnpmにも同じことをしようとしました。私はnpmのソフトリンクを作成しようとしました。

 sudo ln -sf /mnt/7A46BE1454633621/softwares/programming/frontend/nodejs/lib/node_modules/npm/bin/npm 
    /usr/bin/npm

作成したリンクが正しいかどうかわかりません。しかし、npm -vコマンドを実行すると、バージョン5.0.3が表示されます。これは、インストールしようとしているものです。バージョンが表示されますが、そのすぐ下に次のようなものが表示されます。

5.0.3
npm update check failed                 │
│           Try running with sudo or get access           │
│          to the local update config store via           │
│ sudo chown -R $USER:$(id -gn $USER) /home/sagar/.config 

あなたはなかったsudo chown -R $USER:$(id -gn $USER) /home/sagar/.configよう忠告しますか?
ジョージウドセン

Dockerを使用している場合は、ファイルシステムが読み取り専用かどうかを再確認してください。書き込み可能である必要があります。
КонстантинВан

回答:


14

私のnpmバージョンは5.0.3であり、npmコマンドを使用すると同じ問題が発生します。

npmエラーメッセージ

コマンドは正常に機能していますが、このコードは明確な理由もなく表示され続けます。これらのコマンドで5.0.3から5.2.0に更新しました。

sudo chown -R $USER:$(id -gn $USER) /home/sagar/.config

npm install -g npmまたはnpm i -g npm

現在、npmは正常に動作しています。


私のために働いた。しかし、私はnpmrootでを更新する必要がありましたsudo npm i -g npm。npmを6.0.1に更新
Denialos

3

私にはまったく同じ問題ですが、バージョンに関連していないようです(npm 5.5.1を使用しています)。の権限を修正することで~/.config、私にとってのトリックができました。

sudo chown -R $USER:$(id -gn $USER) ~/.config

これは、の所有者の問題に関連していると思い~/.config/configstore/update-notifier-npm.jsonます。


1

の所有者を変更しました

~/configstore

そして

~/configstore/update-notifier-npm.json

$ USER:$ USERに。

私の推測では、npmsudo で実行するとそのファイルが作成されたと思われます。私のシステムでは、少なくともこれが見つかります:

$ env | grep  -e HOME= -e "^USER="
USER=craig
HOME=/home/craig

$ sudo env | grep  -e HOME= -e "^USER="
HOME=/home/craig
USER=root

したがって、sudo npm作成する~/configstore/update-notifier-npm.jsonようにコーディングされている場合は、通常のユーザーのホームディレクトリを作成します。後で実行している場合には、問題を作成しnpmなくてsudoも読み、多分書きたいました~/configstore/update-notifier-npm.json。何らかの理由で、両方のアクセス許可は600です。

場合は注意が必要chownchmodの下にあるすべてのものを-ing ~/.configが敏感に何かがあるかもしれません。


1

エラーメッセージで指定されたchownコマンド使用しないでください。このパス~/.configは多くのアプリケーションで使用され、構成情報を保存するための標準パスです。そこでグループの権利を変更することは推奨されません。次のように必要なパスのみを変更するのが良いでしょう:

sudo chown -R $USER ~/.config/configstore

特殊なケース:Docker

このエラーが発生する一般的なケースは、Dockerのようなものを使用することです(特に自分の家をマウントすることによって)。NPM_CONFIG_CACHEやなどの環境変数の設定を検討してくださいXDG_CONFIG_HOME。最初のものはキャッシュパスを設定し、最後のものはconfigstoreパスを設定します。.configファイルの所有権に関する問題を回避するために、ホームディレクトリのフォルダーを使用しません。ただし、キャッシュを使用すると、NPMなどのサービスで帯域幅を節約できます。すべてのビルドで過剰なダウンロードを避け、次のようなものを使用してください(ただし、ターゲット/tmpに十分なディスク容量があることを確認してください)

test -d /tmp/$USER/cache || mkdir -p /tmp/$USER/cache
docker run \
  -v /tmp/$USER:/tmp/$USER \
  -e "NPM_CONFIG_CACHE=/tmp/$USER/cache/npm" \
  -e "XDG_CONFIG_HOME=/tmp/$USER/cache/" \
  ...

0

この問題を解決するために最初にできることは

  1. 隠しファイルを表示するには、フォルダ設定でオプションにチェックマークを付けていることを確認してください。
  2. .configファイルを右クリックしてプロパティを選択し、[権限]タブをクリックします。
  3. グループ内のフォルダ許可とファイル許可| オーナー| その他は、読み取り、書き込み、および実行オプションにチェックマークを付けます。
  4. 下部にある[囲まれたファイルにアクセス許可を適用する]をクリックします。
  5. 次に、これらのメッセージが表示されていた同じnpmコマンドを再実行してみてください。これで、永久に消えるはずです。

これが助けになったら、あなたは何をすべきかを知っています。

注:.configフォルダー内のconfigstoreのみに同じ手順を適用することもできます。

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