在Mac OS X上使用node.js时出现npm“错误:没有这个模块”的问题

5

我已经通过pkg安装程序和源代码编译安装了node.js v0.8.8。但是当我尝试运行npm时,出现以下错误。希望能得到帮助。

>  $ npm --help
> 
> /usr/lib/node_modules/npm/lib/utils/config-defs.js:5   , stdio =
> process.binding("stdio")
>                     ^ Error: No such module
>     at Object.<anonymous> (/usr/lib/node_modules/npm/lib/utils/config-defs.js:5:21)
>     at Module._compile (module.js:449:26)
>     at Object.Module._extensions..js (module.js:467:10)
>     at Module.load (module.js:356:32)
>     at Function.Module._load (module.js:312:12)
>     at Module.require (module.js:362:17)
>     at require (module.js:378:17)
>     at Object.<anonymous> (/usr/lib/node_modules/npm/lib/utils/ini.js:43:18)
>     at Module._compile (module.js:449:26)
>     at Object.Module._extensions..js (module.js:467:10)

1
呵呵呵,“没有糟糕的模块”。不要更正它。 :) - chrisfrancis27
2个回答

9

我在将Node.JS 0.4升级到0.8时遇到了完全相同的问题。以下是解决方法:

OSX Node.JS包安装程序错误地没有删除/usr/bin中的旧0.4 npm安装文件,这就与/usr/local/bin中的新0.8版本产生冲突。它只是覆盖已经存在的内容。我通过删除它来彻底清除旧文件,但为确保万无一失,我决定进行干净的安装操作:

curl https://npmjs.org/install.sh | sudo clean=yes sh

最后还有一个问题:即使which npm正确返回/usr/local/bin/npm,bash仍然尝试从/usr/bin执行。这是因为在OSX中,bash对可执行文件名称进行了哈希。哈希保存了每次执行常见程序时搜索所有目录的重复操作。在命令行上执行hash -r即可解决此问题。


1
对我来说没什么好运气,从Node 0.4升级到0.10。 - SimplGy

3

您很可能在某种程度上使用了旧的NPM版本。 请参见:npm问题


3
谢谢,我必须克隆Git存储库(git://github.com/isaacs/npm.git),然后手动删除/usr/lib/node_modules/npm和/usr/bin/npm*中的所有内容,然后运行“sudo make install”。 - Sean McCully
哎呀,我想知道为什么当你从源代码编译Node时,它没有覆盖npm二进制文件... - xen

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接