I'm having a stab at learning Node.js and I'm having a few issues when installing NPM (Node Package Manager). I'm pretty sure it's either a permissions thing or folder thing... please note that I've just purchased a Mac (I've used Windows all my life) and I'm pretty unfamiliar with the Mac terminal.
我正在尝试学习Node。js和我在安装NPM (Node Package Manager)时遇到了一些问题。我很确定它是权限或文件夹的东西…请注意,我刚买了一个Mac(我用了一辈子的Windows),而且我对Mac终端很不熟悉。
Okay, I went to use the one line install for NPM: curl http://npmjs.org/install.sh | sh
and I got an error...
好的,我使用了一个为NPM安装的行:curl http://npmjs.org/install.sh | sh,我有一个错误…
All clean!
! [ -d .git ] || git submodule update --init --recursive
node cli.js rm npm -g -f
node cli.js install -g -f
npm ERR! Could not create /usr/local/lib/node_modules/___npm.npm
npm ERR! error installing npm@1.0.94 Error: EACCESS, Undefined error: 0 '/usr/local/lib/node_modules'
npm ERR! Error: EACCESS, Undefined error: 0 '/usr/local/lib/node_modules'
npm ERR! Report this *entire* log at:
npm ERR! <http://github.com/isaacs/npm/issues>
npm ERR! or email it to:
npm ERR! <npm-@googlegroups.com>
npm ERR!
npm ERR! System Darwin 11.0.0
npm ERR! command "node" "/private/var/folders/z2/f05c8hx105g79drh6r7hr01w0000gn/T/npm.1219/package/cli.js" "install" "-g" "-f"
npm ERR! cwd /private/var/folders/z2/f05c8hx105g79drh6r7hr01w0000gn/T/npm.1219/package
npm ERR! node -v v0.5.9-pre
npm ERR! npm -v 1.0.94
npm ERR! path /usr/local/lib/node_modules
npm ERR! code EACCESS
npm ERR!
npm ERR! Additional logging details can be found in:
npm ERR! /private/var/folders/z2/f05c8hx105g79drh6r7hr01w0000gn/T/npm.1219/package/npm-debug.log
npm not ok
make: *** [install] Error 1
npm ERR! Could not create /usr/local/lib/node_modules/___npm.npm
npm ERR! error installing npm@1.0.94 Error: EACCESS, Undefined error: 0 '/usr/local/lib/node_modules'
npm ERR! Error: EACCESS, Undefined error: 0 '/usr/local/lib/node_modules'
npm ERR! Report this *entire* log at:
npm ERR! <http://github.com/isaacs/npm/issues>
npm ERR! or email it to:
npm ERR! <npm-@googlegroups.com>
npm ERR!
npm ERR! System Darwin 11.0.0
npm ERR! command "/usr/local/bin/node" "/private/var/folders/z2/f05c8hx105g79drh6r7hr01w0000gn/T/npm.1219/package/cli.js" "install" "-gf"
npm ERR! cwd /private/var/folders/z2/f05c8hx105g79drh6r7hr01w0000gn/T/npm.1219/package
npm ERR! node -v v0.5.9-pre
npm ERR! npm -v 1.0.94
npm ERR! path /usr/local/lib/node_modules
npm ERR! code EACCESS
npm ERR!
npm ERR! Additional logging details can be found in:
npm ERR! /private/var/folders/z2/f05c8hx105g79drh6r7hr01w0000gn/T/npm.1219/package/npm-debug.log
npm not ok
It failed
there's obviously a folder issue here, perhaps I'm installing in the wrong place, my node folder is at Users/Mike/node, when I try and find out my node path variable using NODE_PATH I get the following error:
这里显然有一个文件夹问题,可能是我在错误的地方安装,我的节点文件夹在用户/Mike/node,当我尝试使用NODE_PATH查找我的节点路径变量时,我得到了以下错误:
Michaels-MacBook-Pro:~ Mike$ node node/NODE_PATH
node.js:203
throw e; // process.nextTick error, or 'error' event on first tick
^
Error: Cannot find module '/Users/Mike/node/NODE_PATH'
at Function._resolveFilename (module.js:334:11)
at Function._load (module.js:279:25)
at Array.<anonymous> (module.js:470:10)
at EventEmitter._tickCallback (node.js:195:26)
Can someone please tell me what I'm doing wrong? Do I need to add the node path like such:
有人能告诉我我做错了什么吗?是否需要添加这样的节点路径:
$ export PATH=/path/to/node/0.n.y/bin:${PATH}
$ curl http://npmjs.org/install.sh | sh
Or am I confusing myself?
还是我把自己搞糊涂了?
5 个解决方案
#1
20
The permissions on /usr/local
require you to use sudo
to install NPM, or change your permissions. Of these three, I recommend the third option.
/usr/local的权限要求您使用sudo来安装NPM,或者更改您的权限。在这三者中,我推荐第三种选择。
Option #1: Use sudo
(Note that the the creator of NPM advises against using this method)
(注意,NPM的创建者建议不要使用这种方法)
curl http://npmjs.org/install.sh | sudo sh
Option #2: Change permissions
sudo chmod g+rwx /usr/local
sudo chgrp admin /usr/local
Option #3: Use Homebrew
I recommend installing Homebrew to manage installing *nix tools on OS X (I'd stay away from MacPorts & Fink). Installing Homebrew will set the permissions for /usr/local
so you can write to it without sudo
. You can then install Node via Homebrew, and then install NPM normally:
我建议在OS X上安装Homebrew来管理安装*nix工具(我将远离MacPorts & Fink)。安装Homebrew将为/usr/local设置权限,这样您就可以在没有sudo的情况下给它写信了。然后您可以通过自制程序安装节点,然后正常安装NPM:
brew install node --without-npm
curl http://npmjs.org/install.sh | sh
#2
0
Use curl http://npmjs.org/install.sh | sudo sh
.
使用curl http://npmjs.org/install.sh | sudo sh。
Edit: You're using node -v v0.5.9-pre, which is very unstable. Use 0.4.12, the latest stable version.
编辑:您使用的是node -v v0.5.9-pre,它非常不稳定。使用0.4.12,最新的稳定版本。
#3
0
if you are using windows , it takes some steps , 1) create a file called package.json
如果您正在使用windows,它需要一些步骤,1)创建一个名为package.json的文件。
{ "name": "hello" , "version": "0.0.1" , "dependencies": { "express": "*" } } where hello is the name of the package and * means the latest version of your dependency
{“name”:“hello”,“version”:“0.0.1”,“dependencies”:{“express”:“*”},hello是包的名称,*表示您的依赖的最新版本。
2) code to you project directory and run the following command
2)代码到您的项目目录并运行以下命令。
npm install
npm安装
#4
0
As update for the method #3 on OSX the correct command now is:
关于OSX的方法#3的更新,现在正确的命令是:
brew install node --without-npm
curl https://www.npmjs.org/install.sh | sh
#5
0
Option #4:
选项# 4:
Install node local to the user that needs it.
将节点本地安装到需要它的用户。
I should clarify for my purposes I needed npm to install appium on an OSX server running Bamboo for our integrated testing. I only had macports available and rather than installing homebrew to manage just the one package I decided to build it from source and install it local to the bamboo user. Which allowed us to run appium as the bamboo user and made it possible to run our appium tests on Bamboo as a not very privileged user.
我应该澄清我的目的,我需要npm在OSX服务器上安装appium,用于我们的集成测试。我只提供了macports,而不是安装homebrew来管理一个包,我决定从源代码构建它,并将它安装到竹用户那里。这让我们可以像竹子使用者一样运行appium,并使我们可以在竹子上运行我们的appium测试作为一个不太有特权的用户。
This guide from Tom Novelli goes over how to do it. The basic gist is:
Tom Novelli的这本指南讲述了如何去做。基本要点是:
# Make the dir to hold the installation of node
cd
mkdir ./local
mkdir sources
# Tell npm about your new non-default directories
vi .npmrc
cd sources
# Get node and do the typical source install procedure
wget http://nodejs.org/dist/v0.10.29/node-v0.10.29.tar.gz
tar xf node-v0.10.29.tar.gz
cd node-v8.10.29/
# Important part is the --prefix
./configure --prefix=~/.local
make
make install
# Make a link so node doesn't get confused
cd
ln -s .local/lib/node_modules .node_modules
# Edit PATH to include ~/.local
vi .bashrc
.npmrc
.npmrc
root = /home/YOUR-USERNAME/.local/lib/node_modules
binroot = /home/YOUR-USERNAME/.local/bin
manroot = /home/YOUR-USERNAME/.local/share/man
.bashrc OR .profile OR whereever you like setting your path
.bashrc或.profile,或者你喜欢设置路径的地方。
export PATH=$HOME/.local/bin:$PATH
Useful Links
有用的链接
The .npmrc man page useful.
.npmrc手册页有用。
And just in case here's a link to node source.
这里是节点源的链接。
#1
20
The permissions on /usr/local
require you to use sudo
to install NPM, or change your permissions. Of these three, I recommend the third option.
/usr/local的权限要求您使用sudo来安装NPM,或者更改您的权限。在这三者中,我推荐第三种选择。
Option #1: Use sudo
(Note that the the creator of NPM advises against using this method)
(注意,NPM的创建者建议不要使用这种方法)
curl http://npmjs.org/install.sh | sudo sh
Option #2: Change permissions
sudo chmod g+rwx /usr/local
sudo chgrp admin /usr/local
Option #3: Use Homebrew
I recommend installing Homebrew to manage installing *nix tools on OS X (I'd stay away from MacPorts & Fink). Installing Homebrew will set the permissions for /usr/local
so you can write to it without sudo
. You can then install Node via Homebrew, and then install NPM normally:
我建议在OS X上安装Homebrew来管理安装*nix工具(我将远离MacPorts & Fink)。安装Homebrew将为/usr/local设置权限,这样您就可以在没有sudo的情况下给它写信了。然后您可以通过自制程序安装节点,然后正常安装NPM:
brew install node --without-npm
curl http://npmjs.org/install.sh | sh
#2
0
Use curl http://npmjs.org/install.sh | sudo sh
.
使用curl http://npmjs.org/install.sh | sudo sh。
Edit: You're using node -v v0.5.9-pre, which is very unstable. Use 0.4.12, the latest stable version.
编辑:您使用的是node -v v0.5.9-pre,它非常不稳定。使用0.4.12,最新的稳定版本。
#3
0
if you are using windows , it takes some steps , 1) create a file called package.json
如果您正在使用windows,它需要一些步骤,1)创建一个名为package.json的文件。
{ "name": "hello" , "version": "0.0.1" , "dependencies": { "express": "*" } } where hello is the name of the package and * means the latest version of your dependency
{“name”:“hello”,“version”:“0.0.1”,“dependencies”:{“express”:“*”},hello是包的名称,*表示您的依赖的最新版本。
2) code to you project directory and run the following command
2)代码到您的项目目录并运行以下命令。
npm install
npm安装
#4
0
As update for the method #3 on OSX the correct command now is:
关于OSX的方法#3的更新,现在正确的命令是:
brew install node --without-npm
curl https://www.npmjs.org/install.sh | sh
#5
0
Option #4:
选项# 4:
Install node local to the user that needs it.
将节点本地安装到需要它的用户。
I should clarify for my purposes I needed npm to install appium on an OSX server running Bamboo for our integrated testing. I only had macports available and rather than installing homebrew to manage just the one package I decided to build it from source and install it local to the bamboo user. Which allowed us to run appium as the bamboo user and made it possible to run our appium tests on Bamboo as a not very privileged user.
我应该澄清我的目的,我需要npm在OSX服务器上安装appium,用于我们的集成测试。我只提供了macports,而不是安装homebrew来管理一个包,我决定从源代码构建它,并将它安装到竹用户那里。这让我们可以像竹子使用者一样运行appium,并使我们可以在竹子上运行我们的appium测试作为一个不太有特权的用户。
This guide from Tom Novelli goes over how to do it. The basic gist is:
Tom Novelli的这本指南讲述了如何去做。基本要点是:
# Make the dir to hold the installation of node
cd
mkdir ./local
mkdir sources
# Tell npm about your new non-default directories
vi .npmrc
cd sources
# Get node and do the typical source install procedure
wget http://nodejs.org/dist/v0.10.29/node-v0.10.29.tar.gz
tar xf node-v0.10.29.tar.gz
cd node-v8.10.29/
# Important part is the --prefix
./configure --prefix=~/.local
make
make install
# Make a link so node doesn't get confused
cd
ln -s .local/lib/node_modules .node_modules
# Edit PATH to include ~/.local
vi .bashrc
.npmrc
.npmrc
root = /home/YOUR-USERNAME/.local/lib/node_modules
binroot = /home/YOUR-USERNAME/.local/bin
manroot = /home/YOUR-USERNAME/.local/share/man
.bashrc OR .profile OR whereever you like setting your path
.bashrc或.profile,或者你喜欢设置路径的地方。
export PATH=$HOME/.local/bin:$PATH
Useful Links
有用的链接
The .npmrc man page useful.
.npmrc手册页有用。
And just in case here's a link to node source.
这里是节点源的链接。