【发布时间】:2016-11-19 05:11:24
【问题描述】:
我正准备在家里开始一些 node.js 开发,但在全局安装 npm 包时偶然发现了一些奇怪的行为。
我使用 WebStorm 作为我的 IDE,并且想要使用 ECMAScript6 功能,这意味着我必须转译源代码,而 WebStorm 使用 Babel 来完成。
所以我尝试全局安装 Babel:
$ sudo npm install -g babel-cli
发生的情况是,这些文件都可以从 root 用户正常访问,并且只要我看起来像 root,babel-cli 目录以及其中的所有文件和目录看起来都很好。当我尝试以其他用户的身份查看或使用该软件包时,问题就出现了:
$ 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 列为我看到的用户时
$ 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/
除了 nobody 拥有的目录之外,我没有发现任何特别之处。
我安装包的时候当然没有错误。
npm 和/或节点有问题吗? Ubuntu有什么问题吗?或者我如何安装节点?什么可能是某事的原因 会这样吗?
本地安装工作正常,对于babel-cli 包,将其安装为本地开发包是一种可接受的解决方法。我仍然想知道在全局安装软件包时会发生什么,以及为什么。
问题answered here。问题与npm 和node 无关。
【问题讨论】:
-
我使用节点源存储库,我还没有看到这些问题。但是,我使用较旧的 npm 运行节点 4.4。您是否只是为了 babel 而遇到他的问题? grunt、gulp、bower 等其他 CLI 工具呢?
-
@tsturzl 我全局安装的所有包都是一样的。
-
永远不要将
sudo与npm一起使用。你只是自找麻烦。清除节点、所有 npm 模块和目录,并以普通用户权限安装所有内容。
标签: node.js ubuntu npm installation