私は自宅でnode.js開発を開始しようとしていましたが、npmパッケージをグローバルにインストールするときに奇妙な動作に遭遇しました。npmは、グローバルにインストールされたパッケージに対して奇妙なパーミッションを設定します。
私はIDEとしてWebStormを使用しており、ECMAScript6の機能を使用したいと考えています。つまり、WebStormがBabelを使用してソースを切り抜かなければなりません。
だから私は、グローバルバベルをインストールしようとした:
$ sudo npm install -g babel-cli
は何が起こることはファイルはrootユーザーからアクセス可能なすべての罰金、およびbabel-cli
ディレクトリであり、その中のすべてのファイルとディレクトリは限り罰金に見えるということです私はroot
のように見えます。私はそれをパッケージを見て、または使用しようとすると問題が別のユーザーとして、来る:
$ ls -l /usr/lib/node_modules/babel-cli/
ls: cannot access '/usr/lib/node_modules/babel-cli/lib': Permission denied
ls: cannot access '/usr/lib/node_modules/babel-cli/index.js': Permission denied
ls: cannot access '/usr/lib/node_modules/babel-cli/scripts': Permission denied
ls: cannot access '/usr/lib/node_modules/babel-cli/node_modules': Permission denied
ls: cannot access '/usr/lib/node_modules/babel-cli/package.json': Permission denied
ls: cannot access '/usr/lib/node_modules/babel-cli/README.md': Permission denied
ls: cannot access '/usr/lib/node_modules/babel-cli/bin': Permission denied
total 0
d????????? ? ? ? ? ? bin/
d????????? ? ? ? ? ? lib/
d????????? ? ? ? ? ? node_modules/
d????????? ? ? ? ? ? scripts/
-????????? ? ? ? ? ? index.js
-????????? ? ? ? ? ? package.json
-????????? ? ? ? ? ? README.md
私がインストールされたパッケージは関係ありませんが、それらはすべて、このようになります。
私はUbuntu 16.04でnode.js v6.3.0とnpm 3.10.3を使用しています。
hereの指示に従ってnode.jsを新しくインストールしました。 npm
を更新しようとすると、同じことがグローバルnpmディレクトリに発生し、npmはroot
以外では使用できなくなります。
私はユーザーとしてグローバルnode_modules
の一覧を表示するとき、私は特別な何も見えないnobody
によって所有されているディレクトリのほかに
$ ll /usr/lib/node_modules/
total 8,0K
drwxr--r-- 6 nobody root 4,0K jul 15 23:50 babel-cli/
drwxr-xr-x 10 root root 4,0K jul 15 23:21 npm/
を参照してください。
パッケージをインストールするときにエラーはありません。
npmやノードに問題がありますか? Ubuntuで何か問題がありますか?または、どのようにノードをインストールしましたか?何かの理由は何でしょうか そのようなことが起こりますか?
ローカルインストールは正常に動作し、babel-cli
パッケージの場合は、ローカル開発パッケージとしてインストールするのが許容される回避策です。私はまだパッケージをグローバルにインストールするときに何が起こるのか、またその理由を知りたいと思います。
問題answered here。問題はnpm
とnode
とは無関係でした。
私はノードのソースリポジトリを使用し、私はこれらの問題を見ていない。しかし、私は古いnpmでノード4.4を実行しています。あなたはバベルのためだけに彼の問題を経験していますか?何か他のCLIのツールについてはどうですか? – tsturzl
@tsturzlグローバルにインストールするすべてのパッケージで同じです。 –
絶対に 'ndo'で' sudo'を使用しないでください。あなたはただのトラブルを求めているだけです。ノードを吹き飛ばし、すべてのnpmのモジュールとディレクトリを開き、すべてのものを通常のユーザー権限でインストールします。 – xdumaine