当我发出命令npm install express
时,它会抛出以下错误。在ubuntu机器上
gaurav@gaurav-Mini-Monster:~/TestScripts$ sudo npm install -g express
npm ERR! error installing express@3.3.3 Error: Unsupported
npm ERR! error installing express@3.3.3 at checkEngine (/usr/local/lib/node_modules/npm/lib/install.js:493:14)
npm ERR! error installing express@3.3.3 at Array.0 (/usr/local/lib/node_modules/npm/node_modules/slide/lib/bind-actor.js:15:8)
npm ERR! error installing express@3.3.3 at LOOP (/usr/local/lib/node_modules/npm/node_modules/slide/lib/chain.js:15:13)
npm ERR! error installing express@3.3.3 at chain (/usr/local/lib/node_modules/npm/node_modules/slide/lib/chain.js:20:4)
npm ERR! error installing express@3.3.3 at installOne_ (/usr/local/lib/node_modules/npm/lib/install.js:470:3)
npm ERR! error installing express@3.3.3 at installOne (/usr/local/lib/node_modules/npm/lib/install.js:411:3)
npm ERR! error installing express@3.3.3 at /usr/local/lib/node_modules/npm/lib/install.js:347:9
npm ERR! error installing express@3.3.3 at /usr/local/lib/node_modules/npm/node_modules/slide/lib/async-map.js:54:35
npm ERR! error installing express@3.3.3 at Array.forEach (native)
npm ERR! error installing express@3.3.3 at /usr/local/lib/node_modules/npm/node_modules/slide/lib/async-map.js:54:11
npm ERR! error rolling back express@3.3.3 Error: UNKNOWN, Unknown error '/usr/local/lib/node_modules/express'
npm ERR! Unsupported
npm ERR! Not compatible with your version of node/npm: connect@2.8.3
npm ERR! Required: {"node":">= 0.8.0"}
npm ERR! Actual: {"npm":"1.0.106","node":"0.5.11-pre"}
npm ERR!
npm ERR! System Linux 3.2.0-48-generic-pae
npm ERR! command "node" "/usr/local/bin/npm" "install" "-g" "express"
npm ERR! cwd /home/gaurav/TestScripts
npm ERR! node -v v0.5.11-pre
npm ERR! npm -v 1.0.106
npm ERR! code ENOTSUP
npm ERR!
npm ERR! Additional logging details can be found in:
npm ERR! /home/gaurav/TestScripts/npm-debug.log
npm not ok
我也试过
sudo npm install express
npm install -g express
sudo npm install -g express
没有任何作用。
答案 0 :(得分:16)
节点很容易手动安装。我喜欢这样做,因为切换版本真的很容易。
这也很棒,因为您不需要向apt
添加一些外部软件包存储库,并且在节点发布新版本时您不必等待这些存储库更新。您可以在发布后立即获得更新。
# make a `~/.nodes/ folder
mkdir -p ~/.nodes && cd ~/.nodes
# download the binaries from nodejs.org
# in this case, here's the linux version
curl -O http://nodejs.org/dist/v0.10.12/node-v0.10.12-linux-x64.tar.gz
# extract
tar -xzf node-v0.10.12-linux-x64.tar.gz
# rename folder to 0.10.12
mv node-v0.10.12-linux-x64 0.10.12
# create a `current` symlink
ln -s 0.10.12 current
# prepend ~/.nodes/bin to your path
# you'll want to save this in ~/.bashrc or ~/.zshrc or something
export PATH="~/.nodes/current/bin:$PATH"
# cleanup
rm ~/.nodes/node-v0.10.12-linux-x64.tar.gz
关于这一点最好的部分是你可以为任何其他版本的节点重复模式,随时更改current
符号链接以切换你正在运行的版本,并且你很高兴
% node --version
v0.10.12
% npm --version
1.2.32
# switch versions to (e.g.) 0.10.5
% cd ~/.nodes && rm current && ln -s 0.10.5 current
% node --version
v0.10.5
% npm --version
1.2.18
编写可执行脚本时的附加指针
制作可执行文件
% touch ~/somefile && chmod +x ~/someifle && nano ~/somefile
文件内容
#!/usr/bin/env node
console.log(process.version);
运行它
% ./somefile
v0.10.12
答案 1 :(得分:10)
您正在运行一个过于旧版的node
和npm
。你有节点v0.5,这是非常过时的。升级到节点v0.10,一切正常。
Ubuntu的现代node.js版本可通过this PPA from Chris Lea
获得安装:
sudo apt-get install python-software-properties
sudo add-apt-repository --yes ppa:chris-lea/node.js
sudo apt-get install nodejs
<强>更新强>
看起来您的旧版本节点已安装在/usr/local/bin/node
。 Chris Lea PPA的新版本将在/usr/bin/node
。所以为了验证一切顺利,请执行:
/usr/bin/npm --version #Should be approx 1.2
/usr/bin/node --version #should be approx v0.10
/usr/bin/npm install -g express
您应该卸载本地节点,或修复您的路径:
export PATH=/usr/bin:$PATH