Yarn: git + ssh软件包安装似乎不起作用

创建于 2016-10-05  ·  103评论  ·  资料来源: yarnpkg/yarn

OP的注意事项:如果您也遇到这个EXACT问题,请在没有评论的情况下投票。


您要请求_feature_还是报告_bug_?

虫子

目前的行为是什么?

yarn install v0.14.0
info No lockfile found.
[1/4] 🔍  Resolving packages...
error Couldn't find package "<package>" on the "npm" registry.

如果当前行为是错误,请提供重现步骤。

"devDependencies": {
    "license-builder": "git+ssh://[email protected]/fishrock123/<package>.git",
}

预期的行为是什么?

典型安装

请提及您的node.js,yarn和操作系统版本。

Node.js:v6.6.1-pre
纱:v0.14.0( master
作业系统:OSX 10.10.5

cat-bug

最有用的评论

对于上下文,来自NPM的文档

npm install <git remote url>:

从托管的git提供程序安装软件包,并使用git进行克隆。 首先,它通过https(带有git的git)尝试,如果失败,则通过ssh尝试。

<protocol>://[<user>[:<password>]@]<hostname>[:<port>][:][/]<path>[#<commit-ish>]

<protocol>gitgit+sshgit+httpgit+httpsgit+file 。 如果未指定<commit-ish> ,则使用master

还应注意, <commit-ish>是可解决的值,范围很广。

commit对象或可以递归解引用到commit对象的对象。 以下是所有承诺,ishes:一个commit对象, tag对象指向commit对象, tag对象指向tag对象指向commit对象,依此类推。

注意:还应确保这些git远程url安装可以使用SSH密钥进行服务器身份验证,而不仅是GitHub / GitLab / etc,还可以跨公共和私有git服务器实例运行。 您可以想象这样一种情况:一家公司内部使用本地git服务器来处理其所有内部管理的依赖项(甚至是通过SSH访问的私有GitHub存储库)。 截至目前,尚未设置yarn来容纳这些“相对常见”的用例。

设置repro案例的最简单方法是尝试使用Yarn从私有GitHub存储库安装软件包。

所有103条评论

您有可以逐字记录的复制品吗? 无法重现此内容。

不,对不起

它实际上不是来自我的个人github。 这是"git+ssh://[email protected]/<org>/<package>.git"

该仓库是私人的,我具有读/写访问权限。 (这通过在我的github帐户上注册的SSH密钥进行访问)

是否有其他日志输出可以帮助您?

我将提到这种情况发生在多个这样的标识符上。

最低再现:

{
  "name": "x",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "devDependencies": {
      "eslint-config-radweb": "git+https://[email protected]/radweb/eslint-config-radweb.git"
  },
  "keywords": [],
  "author": "",
  "license": "ISC"
}

如果有所不同,则该软件包不在注册表中。

当指定git标签(npm允许)时,这也会出错。

示例片段:

...
  "react-quill": "git+https://[email protected]/alexkrolick/react-quill.git#v2.0.1",
...

我也得到这个#621

仅在大小写不同的情况下添加/需要对@BBB的git标签使用其他解决方案:

我正在尝试使用git + ssh安装_specific commit hash_。 NPM默认客户端支持此功能。

看起来#573,#633和#639是相关的

对于上下文,来自NPM的文档

npm install <git remote url>:

从托管的git提供程序安装软件包,并使用git进行克隆。 首先,它通过https(带有git的git)尝试,如果失败,则通过ssh尝试。

<protocol>://[<user>[:<password>]@]<hostname>[:<port>][:][/]<path>[#<commit-ish>]

<protocol>gitgit+sshgit+httpgit+httpsgit+file 。 如果未指定<commit-ish> ,则使用master

还应注意, <commit-ish>是可解决的值,范围很广。

commit对象或可以递归解引用到commit对象的对象。 以下是所有承诺,ishes:一个commit对象, tag对象指向commit对象, tag对象指向tag对象指向commit对象,依此类推。

注意:还应确保这些git远程url安装可以使用SSH密钥进行服务器身份验证,而不仅是GitHub / GitLab / etc,还可以跨公共和私有git服务器实例运行。 您可以想象这样一种情况:一家公司内部使用本地git服务器来处理其所有内部管理的依赖项(甚至是通过SSH访问的私有GitHub存储库)。 截至目前,尚未设置yarn来容纳这些“相对常见”的用例。

设置repro案例的最简单方法是尝试使用Yarn从私有GitHub存储库安装软件包。

如果指定以下源字符串:

"devDependencies": {
    "license-builder": "ssh://github.com/<user>/<package>",
}

然后它确实尝试通过SSH克隆指定的存储库,但失败,并显示“权限被拒绝(公钥)”,因为GitHub希望客户端以git用户身份登录,在这种情况下,默认情况下使用本地帐户用户。

当您确实指定[email protected]来强制git以git身份登录到GitHub时,它将失败,并出现通常的错误:

error Couldn't find any versions for <package> that matches ssh://[email protected]/<user>/<package>.

因此,它几乎可以使用,但是不支持指定用户名。 如果您的本地帐户用户碰巧被称为git ,那么它实际上会成功。

如果将以下内容添加到~/.ssh/config文件中:

Host github.com
        User git

您可以默认通过SSH强制所有登录到github.com的用户使用git ,这使得当使用ssh://github.com/<user>/<package>源格式时,yarn可以从私有存储库克隆。

这对我们来说是一个很强的禁忌,使用git引用的存储库(指向本地gitlab EE实例)是我们工作流程的重要组成部分:
这对于派生并指向“ before merge and npm publish”包(例如,http-proxy ...)非常有用。

@milosivanovic

如果将以下内容添加到〜/ .ssh / config文件中:

但是我的配置已经有我的github的ssh auth凭据,因此我可以访问私有存储库。 此解决方法仅适用于公共仓库,对不对?

@milosivanovic @ntucker实际上在我的特定情况下有效; 我没有任何ssh配置文件开始。

@kblcuk啊,好吧@milosivanovic正在处理其他问题,并声称他的解决方法适用于这些情况,因此我认为这是git url的一般问题的问题。

@ntucker声明的解决方法是用于私有存储库。 如果您在~/.ssh/config已经有一个Host github.com条目,则向该条目添加User git ,并且当您指定源字符串(例如ssh://github.com/<user>/<package>时,yarn就能克隆

@milosivanovic github如何知道我的用户名然后执行ssh auth?

@ntucker通过SSH进行通信时,GitHub希望您以“ git”用户身份登录其服务器。 如果您尝试使用通常的GitHub用户名登录,则身份验证将失败。 GitHub over SSH通过您的公用密钥而不是用户名来区分您。 参考: https :

只是想提一下,因为许多人可能不了解此功能。 对于GitHub,您还可以依赖与yarn配合使用的tarball URL。 安装也更快。

https://github.com/user/repo/tarball/branch

@milosivanovic不幸的是,此解决方法不适用于以下格式的内部url:
git+ssh://[email protected]:team-name/repo.git

如果将初始仓库更改为ssh://source.com/team-name/repo.git格式...

...那么它将对最初的依赖项起作用...但是,当然,然后所有其他内部依赖项(第一个内部依赖项指向它)都会破坏它,因为它们都采用这种格式。

无需遍历所有存储库和依赖项上的所有URL并将其更改为变通方法格式(然后必须处理该URL不能正常在npm上运行),我们对此也有些受阻。

正如@ 131指出的那样,这是团队内部使用npm的一种主要方式(我知道)。

除此之外看起来很棒!

@brokenalarms ssh://host.com/user/repo格式与npm完全向后兼容(只要在SSH配置文件中指定了预期的用户),但这仍然很合理。

我明白了...。所以他们只知道基于ssh密钥的用户是什么?

@ntucker是的

我有同样的问题,但是ntucker将用户git添加到〜/ .ssh / config的解决方案对我有所帮助。 至少在开发环境中。 将尝试立即部署到AWS EB :)

可以确认,使用git+ssh://[email protected]:<org>/<repo>不能在yarn https://github.com:<org>/<repo>中工作,而更改为_NPM _的CI服务器上失败。

这个解决方法对我有帮助:

  1. 从更改了我的私有存储库URL
git+ssh://[email protected]/user/private-repo.git 

ssh://host/user/private-repo.git
  1. 将用户git添加到〜/ .ssh / config:
Host bitbucket.org
    User git

Host github.com
    User git

有人检查过变通办法是否适用于bitbucket?

@tgarbiak-是的,我正在使用bitbucket。

使用BitBucket,将其添加到我的〜/ .ssh / config中:

Host stash.company.com
    port 7999
    User shawn

并用毛线添加此包装:

yarn add ssh://stash.company.com:7999/~user/package.git

当我运行npm install ,它可以正常工作,但是当我运行yarn install ,出现此错误:

error TypeError: Cannot read property 'endsWith' of undefined
    at removeSuffix (/Users/slooker/.nvm/versions/node/v6.4.0/lib/node_modules/yarnpkg/lib/util/misc.js:42:14)
    at Function.parseRefs (/Users/slooker/.nvm/versions/node/v6.4.0/lib/node_modules/yarnpkg/lib/util/git.js:447:55)
    at /Users/slooker/.nvm/versions/node/v6.4.0/lib/node_modules/yarnpkg/lib/util/git.js:376:24
    at next (native)
    at step (/Users/slooker/.nvm/versions/node/v6.4.0/lib/node_modules/yarnpkg/node_modules/babel-runtime/helpers/asyncToGenerator.js:17:30)
    at /Users/slooker/.nvm/versions/node/v6.4.0/lib/node_modules/yarnpkg/node_modules/babel-runtime/helpers/asyncToGenerator.js:28:20
    at run (/Users/slooker/.nvm/versions/node/v6.4.0/lib/node_modules/yarnpkg/node_modules/core-js/library/modules/es6.promise.js:87:22)
    at /Users/slooker/.nvm/versions/node/v6.4.0/lib/node_modules/yarnpkg/node_modules/core-js/library/modules/es6.promise.js:100:28
    at flush (/Users/slooker/.nvm/versions/node/v6.4.0/lib/node_modules/yarnpkg/node_modules/core-js/library/modules/_microtask.js:18:9)
    at _combinedTickCallback (internal/process/next_tick.js:67:7)
    at process._tickCallback (internal/process/next_tick.js:98:9)

是的,如前所述,此替代方法有效。

关键是要改变我们50多岁的人中的每一个
依赖项,并要求每个未来的用户现在都需要额外的
准备其ssh配置文件以与yarn或
不幸的是,现有的npm设置不是一种选择。

2016年10月12日,星期三,Sven Varkel [email protected]写道:

这个解决方法对我有帮助:

  1. 从git + ssh://[email protected]/user/private-repo.git更改了我的私有存储库URL

    ssh://host/user/private-repo.git
  2. 将用户git添加到〜/ .ssh / config:
    ``
    主机bitbucket.org
    用户git

托管github.com
用户git

-
您收到此邮件是因为有人提到您。
直接回复此电子邮件,在GitHub上查看
https://github.com/yarnpkg/yarn/issues/513#issuecomment -253180666或静音
线程
https://github.com/notifications/unsubscribe-auth/AHC8CnUaBP_B_FL_AX1xL5FUrEWR-rnPks5qzLrTgaJpZM4KO4Cm

@diorman和任何阅读此内容的人:我强烈建议您不要在源代码管理中将github令牌签入到package.json文件中。

@jsdnxx感谢您指出这一点。 我刚刚跳入一个大的私有项目,该项目的package.json中已经具有用于私有依赖项的令牌。 将按照您的建议。 再次感谢

对于分支机构, https: //github.com/yarnpkg/yarn/issues/513#issuecomment -253059522的压缩解决方案似乎不起作用,可能是由于缓存。 我使用Yaska/keystone#yaska-build作为要安装的软件包名称,它使用了错误的提交,而当使用https://github.com/Yaska/keystone/tarball/yaska-build它仍然使用了错误的提交。 npm处理正确。

与此相关的是,如果我在本地有yarn link ed私有回购依赖项,yarn甚至不应该检查该依赖项是否在npm注册表中,但是当前,yarn在这种情况下会失败而没有任何此线程中提到的解决方法。

建议的〜/ .ssh / config配置破坏了程序包解析,因此无法正常工作。 希望能解决此问题的PR会很快合并,否则可以恢复正常。

gitlab的解决方法使用以下格式:

{
    "PROJECT": "http://gitlab.com/NAMESPACE/PROJECT/repository/archive.tar.gz?ref=BRANCH_OR_TAG"
}

也可以与私有存储库一起使用,请使用Gitlab个人访问令牌

{
    "PROJECT": "http://gitlab.com/NAMESPACE/PROJECT/repository/archive.tar.gz?ref=BRANCH_OR_TAG&private_token=TOKEN"
}

@Webysther-@jsdnxx所说:

我强烈建议您不要在源代码管理中将github令牌签入到package.json文件中。

GitLab或任何其他私有令牌显然也是如此。

Private Token仅用于param,较新版本的Gitlab可以管理多路访问令牌。
我很想在纱线中使用git + ssh ...

从Gitlab文件:

个人访问令牌

您可以为每个需要访问GitLab API的应用程序生成一个个人访问令牌。

私人代币

您的专用令牌用于未经身份验证访问应用程序资源。

我看了一下代码,在我看来,一旦git repo
到达后,将不再检查其提交哈希,因此您无法跟踪分支。

那是一个正确的评估吗?如果是,那是否属于另一个评估?
问题?

2016年10月14日星期五,上午6:52 Webysther Nunes [email protected]
写道:

私人令牌仅用于参数,Gitlab的新版本能够管理
多路访问令牌。
我很想在纱线中使用git + ssh ...

从Gitlab文件:
个人访问令牌

您可以为使用的每个应用程序生成一个个人访问令牌
需要访问GitLab API。
私人代币

您的私人令牌用于访问应用程序资源,而无需
身份验证。

-
您收到此邮件是因为您发表了评论。
直接回复此电子邮件,在GitHub上查看
https://github.com/yarnpkg/yarn/issues/513#issuecomment -253709157或静音
线程
https://github.com/notifications/unsubscribe-auth/AADWlhxxjS7Kl1wt_Wm6UG1Q_7X86D7oks5qzwqYgaJpZM4KO4Cm

@wmertens不,版本保持锁定在yarn.lock内。 尝试yarn upgrade

@Webysther lasyarn upgrade没有什么区别。 它继续使用旧的提交。 我必须注意,该分支是强制推入的,但我认为这并不重要,因为yarn应该查找与给定标签匹配的提交并安装它,对吗?

我找到了一种解决方法,可以强制纱线获取正确的提交:

~/.yarn-cache删除软件包,然后运行yarn upgrade

它将再次获取它,并且一切恢复正常。 期望yarn upgrade检查git repos的提交是错误的吗?

我认为纱线升级应该检查新的git commit是正确的,但是应该是每个项目的版本,而不是缓存在用户主目录中。 但这也是我认为的单独错误

我们的项目有数百个以下形式的package.json条目
"[name]": "[email protected]:[team]/[project].git"
看到相同的错误

PR#971可以解决这个问题吗?

@BryanCrotaz不,这似乎不是一个完整的解决方案。 似乎仅限于GitHub。 私人存储库仍然是一个问题(例如git+ssh://[email protected]:user/project.git#d6c5789

编辑:正如下面的@bdougherty所指出的那样, git+ssh://[email protected]/user/project.git#d6c5789 ,在用户之前使用/而不是:起作用。

+1

我可以通过更改以下网址的格式来解决此问题:

git+ssh://git<strong i="6">@host</strong>:org/repo.git

git+ssh://[email protected]/org/repo.git

两种格式都在npm中有效,唯一的不足是所有依赖项都需要使用该格式。

@kitten我认为这个( git+ssh://[email protected]/org/repo.git )现在对我有用吗?

:v0.16.1
节点:v6.9.1


我没有尝试git+ssh://git<strong i="13">@host</strong>:org/repo.git但是url.parse()似乎并没有完全忽略:因此可能需要删除它:

> url.parse('git+ssh://[email protected]:org/my-repo.git')
Url {
  protocol: 'git+ssh:',
  slashes: true,
  auth: 'git',
  host: 'github.com',
  port: null,
  hostname: 'github.com',
  hash: null,
  search: null,
  query: null,
  pathname: '/:org/my-repo.git',
  path: '/:org/my-repo.git',
  href: 'git+ssh://[email protected]/:org/my-repo.git' }

也许https://github.com/yarnpkg/yarn/pull/934不经意地解决了这个问题?

@ Fishrock123我可以确认用yarn v0.16.0 git + ssh软件包安装可以正常工作。
在v0.13.0中,使用git + ssh软件包的error Couldn't find package "<package>" on the "npm" registry.一直失败。

@ Fishrock123确认。 即使在这里,它现在也可以工作。

是的,#934旨在解决此问题:)

但是,以下格式将不起作用: git+ssh://git<strong i="6">@host</strong>:org/repo.git (带有:分隔符)

是否有任何有关:分隔符支持即将推出的信息?

我当时正在做一些事情,但是还没有机会先介绍一些边缘案例。 如果没有人击败我,我将在下周尝试解决。

好吧,我仍然对此有疑问,但是可能有点不同。 我可以使用yarn add git+ssh://[email protected]/group/foo.git#0.0.4安装单个软件包,并且效果很好。 然后我想将另一个安装到同一项目yarn add git+ssh://[email protected]/group/bar.git ,突然我得到Couldn't find package "group-foo" on the "npm" registry.

我正在使用版本0.16。 我宁愿以此来制造新的问题吗?

编辑:可能要添加yarn.lock看起来不错...

"git+ssh://[email protected]/group/foo.git#0.0.4":
  name group-foo
  version "0.0.4"
  resolved "git+ssh://[email protected]/group/foo.git#6e25bb42e1725b260d4f1c95582c18aea73e5f5c"

Edit2:可能实际上是package.json中的问题,第一次安装后看起来像这样。 显然,它在yarn.lock中保留了该协议,而放弃了该协议。 因此,我想它只是找不到它,所以它看起来在npm中。

"dependencies": {
  "group-foo": "gitlab.com/group/foo.git#0.0.4"
}

+100

更新至v0.16.1并使用git+ssh://[email protected]/org/repo.git语法为我解决了此问题(注意:仍然无法使用git+ssh://git<strong i="6">@host</strong>:org/repo.git语法)

关键是要支持现有的package.json文件,否则迁移将很困难,并且双重运行无法进行测试

使用yarn 0.16.1我可以使用带有git + ssh语法的私有存储库。 另外,它正确使用了git @用户。

@fermuch而且你可以运行例如。 这样安装后yarn ls ? 您的package.json看起来像什么,私人存储库的网址相同还是有所更改?

@FredyC我的yarn add

yarn add git+ssh://[email protected]/foobar/my-private-package.git
yarn add v0.16.1
[1/4] Resolving packages...
[2/4] Fetching packages...
[3/4] Linking dependencies...
warning Unmet peer dependency "[email protected]^1.0.0".
[4/4] Building fresh packages...
success Saved lockfile.
success Saved 1 new dependency
└─ [email protected]

这是从node_modules删除my-private-package之后运行的。
yarn add ,我可以在node_modules内部正确看到文件。

纱线ls输出:

error Couldn't find any versions for my-private-package that matches github.com/foobar/my-private-package.git. Possible versions: 0.1.4

我不确定为什么会给出0.1.4因为该软件包在npm注册表中不存在,而github的软件包具有2.1.3

编辑

另外,值得注意的是这被添加到我的yarn.lock

"git+ssh://[email protected]/foobar/my-private-package.git":
  name my-private-package
  version "2.1.3"
  resolved "git+ssh://[email protected]/foobar/my-private-package.git#99186dc139e13a1420e56288efd02fd0b3158aa7"

@fermuch是的,我在那里有完全相同的问题。 我几乎可以肯定,如果您现在尝试在其中添加任何其他软件包(甚至是npm中的一个软件包),它也会失败。 我已经为此创建了单独的问题...#1312

我在这里有同样的问题,但是使用公共网址,而不是通过ssh。

  "devDependencies": {
    "code": "2.x.x",
    "hapi": "10.x.x",
    "lab": "10.x.x",
    "k7": "[email protected]:thebergamo/k7.git#v1.5"
  },

大家好,

我发现问题还与您拥有的节点版本有关。

我正在使用“ git + ssh://[email protected]//.git#“。我在OSX和CentOS 7上进行开发。我发现,在最新版本的节点4(v4.6.1)和节点6(v6.9.1)上,yarn可以毫无问题地使用此格式。对于较旧的节点版本4(v4.4.5)可以在OSX上运行,但不能在CentOS 7上运行。

在引用kcormier时,我尝试了节点4.6.1和节点6.9.1 ,但它们都没有解决yarn无法通过SSH查找特定标记版本的问题。

失败的格式是:

git+ssh://[email protected]:<username>/<project>.git#<tag>

仍然会出现一个错误,即找不到与标记匹配的版本(与npm兼容)。

我发现,如果我将域名改为斜线后将冒号更改,效果很好。 奇怪吧?

@alanhogan我也已经注意到,如果我们在将域更改为斜线后将冒号更改为正常,但如果该软件包具有其他git + ssh依赖项,则必须在要安装的库/软件包的package.json中对其进行更改。 另一个问题是,即使将冒号更改为斜杠,如果您尝试引用特定的提交或分支,也会触发错误。

我自己已经成功地引用了分支和标签。 我正在使用节点6.9.1

但是,是的,递归问题是真实的,尽管还算不错,因为从理论上讲,只有我们自己的私有模块会受到影响。

@alanhogan是的,我也面临同样的问题。

在我的情况下,上述修复似乎不起作用。 我在回购中分叉了一个官方的Npm软件包,当我提供回购的URL时,即使使用/而不是:,yarn仍在解析该正式回购。 (官方:https://github.com/TheLarkInn/angular2-template-loader,我的:https://github.com/Krisa/angular2-template-loader)。 我找不到解决方法(暂时不使用Npm)。

从版本化依赖项切换到tarball依赖项需要yarn cache clean才能真正将tarball解压缩为新的node_module(Node v6 LTS和yarn v0.16.1)。

一大批开发商对此表示赞成,有什么办法可以协助您?

@ f-sign正在我们的团队中进行这项工作。 您想从军队(Flávio)寻求帮助吗?

这个问题的一个重要组成部分似乎是的package.json的不一致和yarn.lock由@FredyC描述:该的package.json不包含git+ssh://[email protected]前缀,这是在安装过程中保持在yarn.lock 。 我当时在想,yarn更喜欢查看yarn.lock文件,而不是从package.json中检索分辨率信息。

手动编辑package.json并设置前缀后,一切正常。

@maybeec这个问题实际上已经在master分支中解决了... https://github.com/yarnpkg/yarn/issues/1312#issuecomment -258230803

做得好,我期待下一个版本。 我认为它将解决很多问题。

是的,我完全不知道发行新专辑会带来什么阻碍。 现在大约一个月了? 我想这是一些严格的Facebook政策或其他...😢

1784请求新版本。 请留下竖起大拇指的反应!

我的问题描述了一个问题,尽管不尽相同,但很相似。 我仔细检查了一下代码,发现了这个有趣的部分,它实际上用在每个git url上:

static cleanUrl(url): string {
    return url.replace(/^git\+/, '');
}

Soooo ....谁能告诉我,传递给yarn的

1816年可能会很好地解决此问题-查看代码更改-它肯定会解决域名后冒号的问题

该问题似乎已在纱线v0.17.0上修复。 我能够在特定版本上获得我的私有Github存储库之一。

这个问题解决了吗? 我试图将我的项目从npm迁移到yarn,但是仍然用[email protected]面对这个问题!

@viswanathamsantosh似乎在我这一边工作

image

看起来这是固定的,这里https://github.com/yarnpkg/yarn/pull/971 !用斜杠(/)替换冒号(:)确实有效。 :')

在我的情况下,用斜杠替换冒号不起作用:( _git + ssh://[email protected]_仍然被缩减为_ ssh://[email protected]_

是的,即使使用纱线的0.17.2版本,我仍然遇到此问题。 git+部分被删除,我最终得到:

Permission denied (publickey).
fatal: Could not read from remote repository.

鉴于它对某些人有效,但让我感到困惑。 知道我们在做什么错吗?

放置在〜/ .ssh / config

Host github.com
        User git

是! 这为我解决了。 谢谢。

不过,如果没有运行cleanUrl ,那就太好了,因此我们可以直接在URL中使用它。 必须更改配置文件需要对devops进行更改,否则我们可以使用版本控制来处理它。 不知道背后的思考过程是...吗?

这里同样的问题。 私人存储库的网址无法像以前那样(npm)运行。

git + ssh://[email protected] :ORG / repo.git应该可以正常工作,因为在迁移阶段需要与npm兼容...

@DominicBoettgerUser git~/.ssh/config您还需要将该冒号更改为正斜杠。 根据我今天的经验,Yarn在结肠中的表现还不太好。

git+ssh://github.com/ORG/repo.git

形式的依赖

git+ssh://[email protected]:myuser/repo.git#v1.0.0",

使用最新的纱线017.2对我不起作用。 错误是:

ssh: Could not resolve hostname bitbucket.org:myuser: Name or service not known

尚未测试解决方法,但希望yarn最终将支持与NPM相同的语法。 这应该是新问题还是仍然适用于此问题?

@sarus PR#1816将解决此问题

请合并PR#1816并发布一个新版本👍

合并? 有人吗 NPM正在驱动我的坚果!! 请合并并释放:(

v0.18.0中仍然存在此问题。

在没有node_modules和yarn.lock文件的情况下,在干净的项目中调用yarn install 。 之后立即再次调用它将导致“无法解析主机名”错误。

我发现删除yarn.lock文件是可行的,所以我认为锁定文件中有问题或从锁定文件中读取时yarn克隆的方式。

希望这可以帮助!

这个问题正是导致许多开发人员停止使用纱线的原因。
我们需要认真对待这个问题

@regou完全同意男人...这是我无法使用Yarn的唯一原因...

人们,而不是持续不断地抱怨没有人为此工作,而是看着提到的PR#1816,您会看到他们正在尝试将其合并...

拜托大家,我们在#1816中对此有个解决方案,弗拉维奥和我花了大约十天的时间。

但是,根据在哪里运行测试,一组不同的测试将失败。

请在您的计算机上运行测试,并在#1816报告,您得到了什么结果以及您的操作系统和节点版本是什么

感谢@FredyC@BryanCrotaz给大家指出了#1816。 我暂时锁定此线程。

通过#2384解决

此页面是否有帮助?
0 / 5 - 0 等级