Nodejs npm安装spm出错,请问是什么问题
Nodejs npm安装spm出错,请问是什么问题
错误提示,请问什么问题,怎么解决?
npm install spm -g npm http GET https://registry.npmjs.org/spm npm http 200 https://registry.npmjs.org/spm npm http GET https://registry.npmjs.org/spm/-/spm-0.4.1.tgz npm http 200 https://registry.npmjs.org/spm/-/spm-0.4.1.tgz
npm ERR! Error: EACCES, mkdir ‘/usr/local/lib/node_modules/spm’ npm ERR! npm ERR! Please try running this command again as root/Administrator. npm ERR! npm ERR! System Darwin 12.2.0 npm ERR! command “node” “/usr/local/bin/npm” “install” “spm” “-g” npm ERR! cwd /Users/nameng npm ERR! node -v v0.6.15 npm ERR! npm -v 1.1.16 npm ERR! path /usr/local/lib/node_modules/spm npm ERR! fstream_path /usr/local/lib/node_modules/spm npm ERR! fstream_type Directory npm ERR! fstream_class DirWriter npm ERR! code EACCES npm ERR! message EACCES, mkdir ‘/usr/local/lib/node_modules/spm’ npm ERR! errno {} npm ERR! fstream_stack /usr/local/lib/node_modules/npm/node_modules/fstream/lib/dir-writer.js:36:23 npm ERR! fstream_stack Object.oncomplete (/usr/local/lib/node_modules/npm/node_modules/mkdirp/index.js:42:17) npm ERR! npm ERR! Additional logging details can be found in: npm ERR! /Users/nameng/npm-debug.log npm not ok
根据你提供的错误信息,主要问题是权限不足导致无法创建目录。具体来说,npm install spm -g
命令试图将 spm
全局安装到 /usr/local/lib/node_modules/spm
目录下,但由于缺乏必要的权限,导致安装失败。
解决方法
方法一:使用 sudo
你可以尝试以管理员权限运行命令。在 macOS 或 Linux 系统中,可以使用 sudo
提升权限:
sudo npm install spm -g
这会要求你输入当前用户的密码,并且可能会询问你是否允许提升权限。输入 y
并按回车键继续即可。
方法二:更改 npm 的全局安装路径
如果你不想每次都用 sudo
,可以更改 npm 的全局安装路径到一个你有写入权限的目录。首先,创建一个新的目录用于存放全局包:
mkdir ~/.npm-global
然后配置 npm 使用这个新目录作为全局安装路径:
npm config set prefix '~/.npm-global'
最后更新你的 shell 配置文件(如 .bashrc
或 .zshrc
),添加以下行:
export PATH=~/.npm-global/bin:$PATH
保存并退出编辑器后,重新加载配置文件:
source ~/.bashrc
# 或者
source ~/.zshrc
现在,你可以不使用 sudo
安装全局包了:
npm install spm -g
示例代码
使用 sudo
的示例:
sudo npm install spm -g
更改全局安装路径的完整步骤:
-
创建新的全局安装目录:
mkdir ~/.npm-global
-
配置 npm 使用该目录:
npm config set prefix '~/.npm-global'
-
更新 shell 配置文件(例如
.bashrc
):echo 'export PATH=~/.npm-global/bin:$PATH' >> ~/.bashrc
-
重新加载 shell 配置文件:
source ~/.bashrc
通过以上步骤,你应该能够成功安装 spm
并避免权限问题。
npm ERR! Error: EACCES, mkdir ‘/usr/local/lib/node_modules/spm’ npm ERR! npm ERR! Please try running this command again as root/Administrator. 这两行是说没权限建文件夹,尝试用 root 或 administrator 帐号执行这个命令。补补英文吧……
使用root帐号执行安装spm,还是出现错误了,是因为我的node的版本太低了吗?
npm install spm -g npm http GET https://registry.npmjs.org/spm npm http 200 https://registry.npmjs.org/spm npm http GET https://registry.npmjs.org/spm/-/spm-0.4.1.tgz npm http 200 https://registry.npmjs.org/spm/-/spm-0.4.1.tgz npm http GET https://registry.npmjs.org/uglify-js npm http GET https://registry.npmjs.org/seajs npm http 200 https://registry.npmjs.org/seajs npm http GET https://registry.npmjs.org/seajs/-/seajs-1.3.0.tgz npm http 200 https://registry.npmjs.org/uglify-js npm http GET https://registry.npmjs.org/uglify-js/-/uglify-js-2.2.0.tgz npm http 200 https://registry.npmjs.org/seajs/-/seajs-1.3.0.tgz npm http 200 https://registry.npmjs.org/uglify-js/-/uglify-js-2.2.0.tgz npm http GET https://registry.npmjs.org/source-map npm http GET https://registry.npmjs.org/optimist npm http 200 https://registry.npmjs.org/optimist npm http GET https://registry.npmjs.org/optimist/-/optimist-0.3.5.tgz npm http 200 https://registry.npmjs.org/source-map
npm ERR! Error: No compatible version found: source-map@’>=0.1.7- <0.2.0-‘ npm ERR! Valid install targets: npm ERR! [“0.0.0”,“0.1.0”,“0.1.1”,“0.1.2”,“0.1.3”] npm ERR! at installTargetsError (/usr/local/lib/node_modules/npm/lib/cache.js:486:10) npm ERR! at next_ (/usr/local/lib/node_modules/npm/lib/cache.js:436:17) npm ERR! at next (/usr/local/lib/node_modules/npm/lib/cache.js:413:44) npm ERR! at /usr/local/lib/node_modules/npm/lib/cache.js:406:5 npm ERR! at saved (/usr/local/lib/node_modules/npm/lib/utils/npm-registry-client/get.js:151:7) npm ERR! at Object.oncomplete (/usr/local/lib/node_modules/npm/node_modules/graceful-fs/graceful-fs.js:230:7) npm ERR! You may report this 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 12.2.0 npm ERR! command “node” “/usr/local/bin/npm” “install” “spm” "-g" npm ERR! cwd /private/var/root npm ERR! node -v v0.6.15 npm ERR! npm -v 1.1.16 npm ERR! message No compatible version found: source-map@’>=0.1.7- <0.2.0-' npm ERR! message Valid install targets: npm ERR! message [“0.0.0”,“0.1.0”,“0.1.1”,“0.1.2”,“0.1.3”] npm ERR! npm ERR! Additional logging details can be found in: npm ERR! /private/var/root/npm-debug.log npm not ok
升级了node到0.8.14
node -v
v0.8.14
安装spm还是报错
root# npm install spm -g
npm http GET https://registry.npmjs.org/spm
npm http 304 https://registry.npmjs.org/spm
npm http GET https://registry.npmjs.org/spm/-/spm-1.1.2.tgz
npm http 200 https://registry.npmjs.org/spm/-/spm-1.1.2.tgz
npm ERR! SyntaxError: Unexpected end of input
npm ERR! at Object.parse (native)
npm ERR! at Packer.readRules (/usr/local/lib/node_modules/npm/node_modules/fstream-npm/fstream-npm.js:174:31)
npm ERR! at Packer.IgnoreReader.addIgnoreFile (/usr/local/lib/node_modules/npm/node_modules/fstream-npm/node_modules/fstream-ignore/ignore.js:132:22)
npm ERR! at fs.readFile (fs.js:176:14)
npm ERR! at fs.close (/usr/local/lib/node_modules/npm/node_modules/graceful-fs/graceful-fs.js:94:5)
npm ERR! at Object.oncomplete (fs.js:297:15)
npm ERR! You may report this 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 12.2.0
npm ERR! command “node” “/usr/local/bin/npm” “install” “spm” “-g”
npm ERR! cwd /private/var/root
npm ERR! node -v v0.8.14
npm ERR! npm -v 1.1.16
npm ERR! type unexpected_eos
npm ERR! arguments []
npm ERR! message Unexpected end of input
npm ERR!
npm ERR! Additional logging details can be found in:
npm ERR! /private/var/root/npm-debug.log
npm not ok
spm 还是从源码编译吧。去官方提bug,spm的作者们每天都在。。回复的都超级及时- -。
上周改版改动非常大。。还换了新源。。
谢谢你提醒
从错误信息看,是没有权限创建目录权限,尝试用sudo npm install.
根据你的错误提示信息,主要问题在于权限不足。当你尝试使用 npm install spm -g
全局安装某个包时,npm
需要在 /usr/local/lib/node_modules
目录下创建一个新的目录,但当前用户没有足够的权限执行此操作。
解决方法
方法一:以管理员身份运行
你可以使用 sudo
命令来提升权限:
sudo npm install spm -g
这会要求你输入密码,因为这是对系统文件进行修改。
方法二:更改全局安装路径
如果你不想使用管理员权限,可以更改全局安装路径到一个你有写入权限的地方。例如,在你的用户目录下创建一个文件夹用于存放全局 npm 包:
mkdir ~/.npm-global
然后配置 npm 使用这个路径:
npm config set prefix '~/.npm-global'
之后更新你的 shell 配置文件(如 .bashrc
或 .zshrc
),添加以下行:
export PATH=~/.npm-global/bin:$PATH
最后重新加载 shell 配置文件:
source ~/.bashrc
# 或者
source ~/.zshrc
现在你可以再次尝试全局安装 spm:
npm install spm -g
这种方法避免了使用管理员权限,并且使全局包的管理更加灵活。