javascript 尝试为 Node.js 安装 npm 时出错

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/7705110/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-10-26 01:01:16  来源:igfitidea点击:

Error trying to install npm for Node.js

javascriptnode.jsnpm

提问by Mike Sav

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(节点包管理器)时遇到了一些问题。我很确定它要么是权限问题,要么是文件夹问题……请注意,我刚刚购买了一台 Mac(我一生都在使用 Windows),而且我对 Mac 终端非常不熟悉。

Okay, I went to use the one line install for NPM: curl http://npmjs.org/install.sh| shand 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 [email protected] 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!     <[email protected]>
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 [email protected] 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!     <[email protected]>
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:

这里显然存在文件夹问题,也许我安装在错误的位置,我的节点文件夹位于用户/迈克/节点,当我尝试使用 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?

还是我自己搞糊涂了?

回答by Andrew Marshall

The permissions on /usr/localrequire you to use sudoto install NPM, or change your permissions. Of these three, I recommend the third option.

权限/usr/local要求您用于sudo安装 NPM,或更改您的权限。在这三个中,我推荐第三个选项

Option #1: Use sudo

选项#1:使用 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

选项#2:更改权限

sudo chmod g+rwx /usr/local
sudo chgrp admin /usr/local

Option #3: Use Homebrew

选项 #3:使用 Homebrew

I recommend installing Homebrewto manage installing *nix tools on OS X (I'd stay away from MacPorts& Fink). Installing Homebrew will set the permissions for /usr/localso you can write to it without sudo. You can then install Node via Homebrew, and then install NPM normally:

我建议安装 Homebrew来管理在 OS X 上安装 *nix 工具(我会远离MacPorts& Fink)。安装 Homebrew 将设置权限,/usr/local因此您可以在没有sudo. 然后就可以通过 Homebrew 安装 Node,然后正常安装 NPM:

brew install node --without-npm
curl http://npmjs.org/install.sh | sh

回答by thejh

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,最新的稳定版本。

回答by Subbu

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

安装

回答by Mimo

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

回答by jmathew

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 在运行 Bamboo 的 OSX 服务器上安装 appium 以进行集成测试。我只有 macports 可用,而不是安装自制软件来管理一个包,我决定从源代码构建它并将其安装在本地给竹用户。这使我们能够以竹子用户的身份运行 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 .npmrcman page useful.

.npmrc手册页有用的。

And just in case here's a link to node source.

以防万一这里有一个指向node source的链接。