Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js Can';t以用户身份运行npm安装的软件包_Node.js_Fedora_Npm - Fatal编程技术网

Node.js Can';t以用户身份运行npm安装的软件包

Node.js Can';t以用户身份运行npm安装的软件包,node.js,fedora,npm,Node.js,Fedora,Npm,今天下午早些时候,我在Fedora16上安装了Node.js user@$ sudo yum localinstall --nogpgcheck http://nodejs.tchol.org/repocfg/fedora/nodejs-stable-release.noarch.rpm user@$ sudo yum install nodejs-compat-symlinks npm 然后我安装了一个带有npm的包。我用npm在Fedora上安装的每个软件包(这不是我第一次)都涉及如下过

今天下午早些时候,我在Fedora16上安装了Node.js

user@$ sudo yum localinstall --nogpgcheck http://nodejs.tchol.org/repocfg/fedora/nodejs-stable-release.noarch.rpm

user@$ sudo yum install nodejs-compat-symlinks npm
然后我安装了一个带有npm的包。我用npm在Fedora上安装的每个软件包(这不是我第一次)都涉及如下过程。读它,然后哭泣。很明显,这是不正确的,但当我决定安装更少的或任何其他npm软件包时,我必须经历同样的过程。为什么?我的环境或方法有哪些缺陷

user@$ sudo npm install -g jslint
[... this works ... kind of]

user@$ jslint
bash: jslint: command not found

user@$ sudo su

root@$ jslint
No files specified.
Usage: /bin/jslint ... [works]

root@$ which jslint
/bin/jslint

root@$ ls -l jslint
lrwxrwxrwx. 1 root root 38 Jul 15 14:58 /bin/jslint -> /lib/node_modules/jslint/bin/jslint.js

root@$ cd /lib/node_modules; ls -l
...
drwxr-xr-x. 2 root   root     4096 Jul 15 14:22 inherits
drwxr-xr-x. 2 root   root     4096 Jul 15 14:22 ini
drwx------. 6 nobody usergroup 4096 Jul 15 14:58 jshint
drwxr-xr-x. 3 root   root     4096 Jul 15 14:22 lru-cache
...

root@$ find . -type d -print0 | xargs -0 chmod 755

root@$ ls -l
...
drwxr-xr-x. 2 root   root     4096 Jul 15 14:22 inherits
drwxr-xr-x. 2 root   root     4096 Jul 15 14:22 ini
drwxr-xr-x. 5 nobody usergroup 4096 Jul 15 15:32 jslint
drwxr-xr-x. 3 root   root     4096 Jul 15 14:22 lru-cache
...

root@$ su user

user@$ jslint
o files specified.
Usage: /bin/jslint [now it finally works]

npm的最新版本切换到用户“nobody”,作为一种安全措施,如果它是以sudo权限运行的。尝试在以root用户身份登录时进行全局安装,而不是使用sudo。

IIRC,npm的最新版本在以root用户权限运行时会切换到用户“nobody”作为安全措施。这可能是问题的原因,也可能不是,但可能与此相关。您可以尝试以root用户身份进行全局安装,而不是使用sudo权限。这很有效!如果你想提交答案,我会把它标记为正确的。即使这样也不总是有效的。我用npm 4.8版的
npm安装-g react scripts
进行了尝试,得到了
nobody
的sudo提示。您可以在npm的问题跟踪程序中找到