nvm与npm配置中的"prefix"选项不兼容。

305

我正在尝试使用nvm运行另一个NodeJS版本,但出现了以下错误:

$ nvm use v4.2.4

nvm is not compatible with the npm config "prefix" option: 
   currently set to "/Users/z/.npm-global"
Run `npm config delete prefix` or `nvm use --delete-prefix v4.2.4` to unset it.

我故意设置了前缀以避免使用sudo npm(请参见https://docs.npmjs.com/getting-started/fixing-npm-permissions)。

是否有任何方法可以在使用nvm的情况下保留全局安装包的前缀?


1
我使用 npm config delete prefix 来解决这个问题,目前还没有任何问题。 - ggdx
1
@DanWhite 如果我删除前缀,就会失去将全局安装转移到专用目录的功能。 - Dmitri Zaitsev
13
那就是重点。使用nvm后,它而不是你来管理全局安装。另外,全局安装不应该在不同的Node版本间共享。 - LJHarb
3
每个 Node 的副本都带有自己的 npm,它确定了自己的设置。 - LJHarb
1
确实,使用nvm选择的每个节点版本都是针对每个shell的 - 这是设计上的考虑。 - LJHarb
显示剩余6条评论
23个回答

0
刚刚解决了这个问题。我将$HOME/.nvm符号链接到$DEV_ZONE/env/node/nvm目录。我面临同样的问题,我在$HOME/.zshrc中替换了NVM_DIR如下:
export NVM_DIR="$DEV_ZONE/env/node/nvm"

顺便提一下,请使用curlwget命令安装NVM,而不是使用brew。更多信息请查看Github上此问题的评论:855#issuecomment-146115434


使用 npm 安装 nvm 怎么样? - Dmitri Zaitsev
1
通过Homebrew安装nvm已经被官方弃用,并且由于某些不兼容性问题而导致出现问题。官方的方法是使用curl/wget,参见https://github.com/creationix/nvm#install-script 参见https://github.com/creationix/nvm/issues/298#issuecomment-152255091 据我所知,不支持通过npm安装,因为nvm会安装npm,所以如果npm也安装nvm,可能会导致边缘情况。您可以在我之前链接的问题中了解更多信息。 - Vadorequest

0
我在寻找解决nvm前缀问题的方法时,在找到解决方案之前,发现了这个问题。这是我的shell“对话框”。希望它对某人有用。我能够在此帖子的帮助下设置前缀: https://github.com/npm/npm/issues/6592 当我尝试在使用npm --prefix="" set prefix ""之前使用npm config delete prefixnvm use --delete-prefix时,我只得到: npm ERR! not ok code 0
请注意,您将不得不重复相同的过程以每个节点版本,前缀在安装后被设置回(在我的情况下)/usr/local。
    $ nvm install 0.10
    ######################################################################## 100.0%
    nvm is not compatible with the npm config "prefix" option: currently set to "/usr/local"
    Run `npm config delete prefix` or `nvm use --delete-prefix v0.10.44` to unset it.
    $ npm --prefix="" set prefix ""
    $ nvm use 0.10.44
    nvm is not compatible with the npm config "prefix" option: currently set to "/home/john"
    Run `npm config delete prefix` or `nvm use --delete-prefix v0.10.44` to unset it.
    $ nvm use --delete-prefix v0.10.44
    Now using node v0.10.44 (npm v1.3.10)
    $ nvm ls
    v0.10.44
             v4.4.3
    ->       system
    default -> 4.4.3 (-> v4.4.3)
    node -> stable (-> v4.4.3) (default)
    stable -> 4.4 (-> v4.4.3) (default)
    iojs -> N/A (default)
    $ npm config get prefix
    /usr/local

-3
注意:
要删除或卸载nvm,只需删除$NVM_DIR文件夹(通常为~/.nvm
您可以尝试:
rm -rf ~/.nvm

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