我试图用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而不丢失全局安装包的前缀?


当前回答

我在使用通过nvm安装的node和通过homebrew安装的nvm时遇到了这个问题。我通过运行brew uninstall nvm, rm -rf $NVM_DIR来解决这个问题,然后使用官方安装脚本重新安装nvm,并重新安装我需要的节点版本。

注意:我还挂载了$NVM_DIR并进行了符号链接。我把它移回了homedir。

其他回答

我也遇到过同样的问题,这是因为node和nodejs的npm冲突

因此,通过以下命令删除nodejs

sudo apt-get remove nodejs

这将删除所有与nodejs相关的包,

在上面的命令之后,您必须运行autoremove命令

sudo apt autoremove

这样问题就解决了,

我正在寻找nvm前缀问题的解决方案,发现了这个问题(在找到解决方案之前)。这是我的shell“dialog”。我希望它能对某些人有用。在这篇文章的帮助下,我能够设置为前缀: https://github.com/npm/npm/issues/6592

当我在使用npm——prefix="" set prefix ""之前尝试npm config delete prefix或nvm use——delete-prefix ""时,我只得到: npm犯错!不行,代码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

删除并重置字冠

$ npm config delete prefix 
$ npm config set prefix $NVM_DIR/versions/node/v6.11.1

注意:将版本号更改为错误消息中指示的版本号。

NVM不兼容NPM配置“prefix”选项:目前 set to "/usr/local"执行"npm config delete prefix"或"nvm use " ——delete-prefix v6.11.1——silent"


@gabfiocchi在Github -“你需要覆盖nvm前缀”

我也有同样的问题,每次使用终端都很烦人。我向终端运行命令,它被修复了

对于那些试图从brew中删除nvm的人

仅仅酿造卸载NVM可能是不够的

如果您看到NPM prefix仍然是/usr/local,请执行此命令

Sudo rm -rf /usr/local/ {lib /节点{/ .npm _modules},垃圾桶,分享/人}/ {npm *,节点*,男士一/节点*}

对我来说,我去掉了线条

NPM_PACKAGES="${HOME}/.npm-packages"

PATH="$NPM_PACKAGES/bin:$PATH"

从我的.bashrc和能够运行npm install -g package-name,而不需要sudo权限或有错误消息出现在我的shell窗口。