尝试修复NPM安装时出错

时间:2014-09-08 19:21:07

标签: node.js npm

最初我试图在我的centos服务器上修复"Cannot find module 'npmlog'"问题。看看stackoverflow我找到了一个适用于其他人的推荐解决方案:

curl -0 -L http://npmjs.org/install.sh | sudo sh

但我一直在收到流动的错误:

curl -0 -L http://npmjs.org/install.sh | sudo sh
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0   193    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
100  6711  100  6711    0     0   9554      0 --:--:-- --:--:-- --:--:--  9554
npm cannot be installed without nodejs.
Install node first, and then try again.

Maybe node is installed, but not in the PATH?
Note that running as sudo can change envs.

PATH=/sbin:/bin:/usr/sbin:/usr/bin

我安装了节点,路径正常

echo $PATH
/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/opt/aws/bin:/etc/init.d/:/root/bin:/tradair/tools/node-v0.8.19/bin/

2 个答案:

答案 0 :(得分:1)

以下是从源安装给定版本的步骤 注意 - 这会安装nodejs,它既可以提供节点也可以提供npm,它们每个版本都可以组合在一起。

开始新鲜删除之前的node.js和npm安装以及以下内容:

sudo mv ~/.npmrc ~/.npmrc_ignore
sudo mv ~/.npm   ~/.npm_ignore
sudo mv ~/tmp    ~/tmp_ignore
sudo mv ~/.npm-init.js ~/.npm-init.js_ignore

安装nodejs和npm作为你自己不root用户执行这些命令(OSX / linux):

parent_dir=${HOME}/bin_xxxx  #  replace bin_xxx with something specific
                             #  to node release like bin_v0.10.31

mkdir ${parent_dir}

http://nodejs.org/download/

下载源代码
cd node-v0.xxxx

./configure   --prefix=${parent_dir}/nodejs

make -j8
make install

将其放入上面--prefix

定义的目录中
export PATH=${parent_dir}/nodejs/bin:$PATH

定义环境变量NODE_PATH,以便节点可以找到模块的dir npm install xxx会将新安装的模块放入curr目录中的dir:

export NODE_PATH=${parent_dir}/nodejs/lib/node_modules

执行上面的操作并使用语法:npm install -g some_cool_module 总是使用-g为全局,因此它被安装到dir $ NODE_PATH中 而不是你的$ PWD

nodejs install也为你提供了npm:

ls -la ${parent_dir}/nodejs/bin

答案 1 :(得分:1)

这将解决npmlog缺失模块问题:

cd <node_home>/bin
mv npm npm.orig
ln -s ../lib/node_modules/npm/cli.js npm