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


9 回复

根据你提供的错误信息,主要问题是权限不足导致无法创建目录。具体来说,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

更改全局安装路径的完整步骤:

  1. 创建新的全局安装目录:

    mkdir ~/.npm-global
    
  2. 配置 npm 使用该目录:

    npm config set prefix '~/.npm-global'
    
  3. 更新 shell 配置文件(例如 .bashrc):

    echo 'export PATH=~/.npm-global/bin:$PATH' >> ~/.bashrc
    
  4. 重新加载 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

这种方法避免了使用管理员权限,并且使全局包的管理更加灵活。

回到顶部