纱线未安装在 nvm 版本节点版本中
Posted
技术标签:
【中文标题】纱线未安装在 nvm 版本节点版本中【英文标题】:Yarn not installing in nvm version node version 【发布时间】:2019-02-09 23:09:11 【问题描述】:我在更改节点的 nvm 版本时遇到了纱线问题。 我注意到当我检查我的 ~/.nvm 文件夹时,我看到了两个节点版本。
v8.11.0 v8.11.3.我在全球范围内安装了 yarn。在我使用 v8.11.0 时使用 npm install -g yarn。
我可以看到纱线在我的
.nvm/versions/node/v8.11.0
但是当我切换到 nvm v8.11.3 或将我的 nvm 别名默认设置为 v8.11.3 纱线不再可用。我尝试再次进行全局安装,希望它将它添加到我的 v8.11.3 文件夹中,但它一直试图将它添加到 v8.11.0
我什至删除了 v8.11.0 文件夹,但它只是在我运行 npm install -g yarn 时重新创建
我怎样才能安装它,以便我可以使用 nvm 中的任何节点版本开关来使用 yarn
【问题讨论】:
【参考方案1】:当你使用nvm安装新的node版本,然后使用npm安装yarn时,你需要为新的node版本重新安装yarn。
试试:
nvm install 8.11.3
nvm use 8.11.3
npm install -g yarn
这会将纱线安装在:
.nvm/versions/node/v8.11.3/
然后你可以在 8.11.0 和 8.11.3 之间切换,你的 yarn 仍然可以工作。
【讨论】:
似乎不起作用仍然将纱线放在旧节点版本 -->/Users/mpayne/.nvm/versions/node/v6.11.4/bin/yarn -> /Users/mpayne/ .nvm/versions/node/v6.11.4/lib/node_modules/yarn/bin/yarn.js /Users/mpayne/.nvm/versions/node/v6.11.4/bin/yarnpkg -> /Users/mpayne/.nvm /versions/node/v6.11.4/lib/node_modules/yarn/bin/yarn.js + yarn@1.12.3 在 0.827 秒内更新了 1 个包 --> nvm 当前 v8.12.0 为什么您的结果中有节点 v6.11.4?你能发布“nvm列表”吗? @MatthewPayne 你能确认一下吗?请不要忘记标记已回答并点赞:)。【参考方案2】:OP 所描述的问题是由于全局安装的包存在于它们尊重的命名空间(它们的版本)中,并且它不能跨版本共享。有几种方法可以解决这个问题。 非推荐方式是通过brew
、apt
或非节点包管理器安装yarn。虽然它有效,但事情可能会破裂。
推荐方式如下所述。 nvm 有一个非常好的默认软件包安装程序。这将在使用 nvm 安装新节点版本时安装指定的包。
在$NVM_DIR/default-packages
创建一个文本文件,通常位于~/.nvm/default-packages
,其中包含要安装的npm 包列表。
内容可能如下所示
@vue/cli
create-react-app
firebase-tools
yarn
文档链接here
尝试运行nvm install --lts
安装node 最新的lts 版本,default-packages
中指定的包将被自动安装。
【讨论】:
在问这个问题之前,我搜索了 gh-nvm 问题,但是有很多问题——有没有办法在不重新安装所有节点的情况下更新/安装这些默认包?【参考方案3】:检查是否有~/.npmrc
文件。
如果有,删除里面的内容。
【讨论】:
【参考方案4】:我最近遇到了这个问题(在 Mac 上)。我不得不使用
brew install yarn --ignore-dependencies
这对我有用。无论我使用 nvm 切换到什么节点版本,纱线都可用。希望这可以帮助某人。更多信息可以在这里找到:https://yarnpkg.com/lang/en/docs/install/#mac-stable
【讨论】:
这将起作用,但也会导致使用与 brew 一起安装的 yarn,无论 nvm 使用什么节点版本。所以如果你想在不同的项目上使用不同的 yarn 版本,这会导致问题。【参考方案5】:按照official documentation上的安装指南进行操作:
如果使用 nvm,您可以通过以下方式避免节点安装:
sudo apt update && sudo apt install --no-install-recommends yarn
注意:由于在某些发行版中使用 nodejs 而不是节点名称,yarn 可能会抱怨未安装节点。解决方法是在 .bashrc 文件中添加一个别名,如下所示:alias node=nodejs.
这会将 yarn 指向您决定使用的任何版本的节点。
【讨论】:
以上是关于纱线未安装在 nvm 版本节点版本中的主要内容,如果未能解决你的问题,请参考以下文章