Yarn: 发生意外错误:请求失败“ 404未找到”。

创建于 2017-02-21  ·  89评论  ·  资料来源: yarnpkg/yarn

您是否要请求功能或报告错误
虫子

目前的行为是什么?
我有一个仅依赖于npmjs存储库中的模块的软件包。 它们主要是公共存储库,但是其中有5个是使用@符号限定范围的私有存储库。 同样,它们托管在npmjs

直到今天的某个时候,他们所有人都可以毫无问题地下载安装程序。 但是,某些更改已发生,现在其中一个无法安装,并出现以下错误:

error An unexpected error occurred: "http://registry.npmjs.org/@pepperhq/hmac-http-authentication/-/hmac-http-authentication-0.1.2.tgz: Request failed \"404 Not Found\"".

如前所述,其他专用存储库(都在同一@范围内)按预期下载并安装。 这使我认为这不是身份验证问题。

我的.npmrc位于项目的根目录中,其中包含我的_authToken看起来像这样:

//registry.npmjs.org/:_authToken=TOKEN_HERE

我已经完成了以下活动:

1)再次使用npm login登录以获得新的accessToken
2)确保软件包名称正确(我是从npm网站复制来确定的)
3)运行rm -rf node_modules && rm yarn.lock && yarn cache clean
4)从我的package.json中删除有问题的包,并尝试重新yarn add
5)尝试运行等效的npm install --save命令。 这工作了。

如果当前行为是错误,请提供重现步骤。
由于我不确定原因,因此不确定如何复制。 愿意就“不和谐”或对此问题发表评论进行进一步讨论。

预期的行为是什么?
我希望Yarn从npmjs安装我的所有私有存储库

请提及您的node.js,yarn和操作系统版本。
取自yarn-error.log

Yarn version: 
  0.20.3

Node version: 
  6.9.5

Platform: 
  darwin x64
needs-discussion triaged

最有用的评论

谢谢,我也通过删除yarn.lock解决了这个问题。

所有89条评论

顺便说一句,该软件包确实确实存在,并且yarn显然以某种方式访问​​该软件包,因为url包含了它试图检索的版本号。

运行了更多测试后,我发现在使用Yarn时,相同的软件包无法从需要它的其他存储库中安装。 但是,当使用npm时,它可以正常工作。

这使我认为这不是我的存储库特定配置。 可能与将Yarn跳开的包的名称或url编码有关吗?

在这里抓着稻草,但希望这可以使人朝正确的方向前进

我解决了这个问题:我只是用新的版本号重新发布了有问题的软件包。

我不知道为什么要修复它。

我将把它留在这里,以防调试。

我遇到了同样的问题。 这似乎是随机发生的,通常可以通过重试构建来解决。

我们也遇到了完全相同的问题。
一些专用模块可以工作,而某些则不能。 都是一样的@scope。

我们只是遇到了同样的问题。 在此提供更多背景信息,希望对您有所帮助

  • 我们在CI(Drone)中运行yarn,该CI在临时Docker容器中运行[Alpine Linux]
  • 该问题仅发生在我们的一个服务构建中,而其他服务没有错,即使其他服务具有完全相同的依赖树(!)
  • 在Mac上为相同的仓库手动安装不会产生任何问题(!)
  • 该问题仅限于单个私人包裹

如上所述,作为解决方法,发布该程序包的新版本解决了该问题。

不幸的是,由于容器在构建失败后立即被销毁,因此我无法获得详细的yarn-error.log 。 如果还有其他人遇到此问题,您可以通过verbose安装重试一次,然后将日志扔到这里吗?

我看到了同样的问题。 我在circleci 2.0中使用了docker映像,并且遇到了一些在本地调试的不相关问题(cci与本地的编译差异)。

  • 当我在主机OSX机器上yarn时,一切正常。
  • 当我在容器(Ubuntu)上yarn时,出现错误
  • 当我在circleci 2.0基础结构上运行的^^容器(Ubuntu)上yarn时,它可以工作。

我已经设置了.npmrc等。这真是一个难题,它在本地运行的容器上对我不起作用。

详细信息没有提供我可以发现的任何信息:

root<strong i="17">@2adc7c09ff9a</strong>:~/af/spec/dummy# yarn --pure-lockfile --ignore-optional
yarn install v0.21.3
[1/4] Resolving packages...
[2/4] Fetching packages...
error An unexpected error occurred: "https://registry.yarnpkg.com/@alienfast/build/-/build-2.0.38.tgz: Request failed \"404 Not Found\"".
info If you think this is a bug, please open a bug report with the information provided in "/root/af/spec/dummy/yarn-error.log".
info Visit https://yarnpkg.com/en/docs/cli/install for documentation about this command.
root<strong i="18">@2adc7c09ff9a</strong>:~/af/spec/dummy# yarn --pure-lockfile --ignore-optional --verbose
yarn install v0.21.3
verbose 0.178 current time: 2017-03-01T20:22:52.715Z
[1/4] Resolving packages...
[2/4] Fetching packages...
verbose 0.798 Performing "GET" request to "https://registry.yarnpkg.com/@alienfast/build/-/build-2.0.38.tgz".
verbose 0.861 Performing "GET" request to "https://registry.yarnpkg.com/@alienfast/ui/-/ui-1.0.34.tgz".
verbose 0.894 Performing "GET" request to "https://registry.yarnpkg.com/react-relay/-/react-relay-0.10.0.tgz".
verbose 0.895 Performing "GET" request to "https://registry.yarnpkg.com/react-dom/-/react-dom-15.4.2.tgz".
verbose 0.919 Performing "GET" request to "https://registry.yarnpkg.com/eslint/-/eslint-3.15.0.tgz".
verbose 0.941 Performing "GET" request to "https://registry.yarnpkg.com/flow-bin/-/flow-bin-0.39.0.tgz".
verbose 0.951 Performing "GET" request to "https://registry.yarnpkg.com/@alienfast/material-ui/-/material-ui-0.16.87.tgz".
verbose 0.966 Performing "GET" request to "https://registry.yarnpkg.com/@alienfast/react-formal/-/react-formal-0.24.7.tgz".
verbose 1.003 Performing "GET" request to "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.23.0.tgz".
verbose 1.103 Performing "GET" request to "https://registry.yarnpkg.com/graphql/-/graphql-0.9.1.tgz".
verbose 1.178 Performing "GET" request to "https://registry.yarnpkg.com/lodash/-/lodash-4.17.4.tgz".
verbose 1.206 Performing "GET" request to "https://registry.yarnpkg.com/material-ui/-/material-ui-0.16.7.tgz".
verbose 1.249 Performing "GET" request to "https://registry.yarnpkg.com/react-i18next/-/react-i18next-2.2.0.tgz".
verbose 1.261 Performing "GET" request to "https://registry.yarnpkg.com/react-relay-network-layer/-/react-relay-network-layer-1.4.0.tgz".
verbose 1.272 Performing "GET" request to "https://registry.yarnpkg.com/react-router/-/react-router-3.0.2.tgz".
verbose 1.696 Performing "GET" request to "https://registry.yarnpkg.com/react-router-relay/-/react-router-relay-0.13.5.tgz".
verbose 1.764 Performing "GET" request to "https://registry.yarnpkg.com/react-sizeme/-/react-sizeme-2.2.0.tgz".
verbose 2.063 Performing "GET" request to "https://registry.yarnpkg.com/recompose/-/recompose-0.22.0.tgz".
verbose 2.144 Error: https://registry.yarnpkg.com/@alienfast/build/-/build-2.0.38.tgz: Request failed "404 Not Found"
    at Request.handleRequestError (/root/.yarn/lib/fetchers/tarball-fetcher.js:231:20)
    at emitOne (events.js:96:13)
    at Request.emit (events.js:189:7)
    at Request.onRequestResponse (/root/.yarn/node_modules/request/request.js:986:10)
    at emitOne (events.js:96:13)
    at ClientRequest.emit (events.js:189:7)
    at HTTPParser.parserOnIncomingClient (_http_client.js:522:21)
    at HTTPParser.parserOnHeadersComplete (_http_common.js:99:23)
    at TLSSocket.socketOnData (_http_client.js:411:20)
    at emitOne (events.js:96:13)
    at TLSSocket.emit (events.js:189:7)
error An unexpected error occurred: "https://registry.yarnpkg.com/@alienfast/build/-/build-2.0.38.tgz: Request failed \"404 Not Found\"".
info If you think this is a bug, please open a bug report with the information provided in "/root/af/spec/dummy/yarn-error.log".
info Visit https://yarnpkg.com/en/docs/cli/install for documentation about this command.
root<strong i="21">@2adc7c09ff9a</strong>:~/af/spec/dummy# cat ~/.npmrc
registry=https://registry.npmjs.org/
//registry.npmjs.org/:_authToken=${NPM_TOKEN}
root<strong i="24">@2adc7c09ff9a</strong>:~/af/spec/dummy# echo $NPM_TOKEN
xxxxx-xxxx-xxxx-xxxx-xxxxxxxx

此处相同,它在OSX上本地工作,但在CircleCI容器(circleci 1.0)上无效。

我尝试yarn cache clean -之后其他软件包安装失败。

发生在0.18.1和0.21.3的纱线上-也许yarnpkg注册表配置中有所更改吗? 或者,由于我认为此处注释中的每个人都在问题场景中使用CircleCI,因此CircleCI配置存在问题吗?

因此,我们认为我们已经设法解决了问题; 很想知道它是否对其他人有用:
我们必须对.npmrc稍作更改,这为什么行得通几乎没有意义:

registry=http://registry.npmjs.org/
//registry.npmjs.org/:_authToken=${NPM_TOKEN}
<strong i="8">@ourscope</strong>:registry=https://registry.npmjs.org/

需要注意的是,我们既需要普通注册表,又需要一个私人范围的注册表。 只要确保您自己更改了@ourscope

让我知道这是否对任何人都有帮助。

@rogchap我只是尝试了您的解决方案,但仍然看到与以前相同的问题:(

我们的作用域名称中有一个连字符,也许是罪魁祸首?

registry=http://registry.npmjs.org/
//registry.npmjs.org/:_authToken=${NPM_TOKEN}
@our-scope:registry=https://registry.npmjs.org/

@rogchap此替代方法对我们的情况没有任何影响。

root<strong i="7">@f41305331cb8</strong>:~/af/spec/dummy# cat ~/.npmrc
registry=https://registry.npmjs.org/
//registry.npmjs.org/:_authToken=${NPM_TOKEN}
<strong i="8">@alienfast</strong>:registry=https://registry.npmjs.org/

通过0.20.40.21.3确认失败。 鉴于这对我来说也没有问题,我很好奇服务器端是否发生了某些更改而导致了这种情况。 现在肯定看起来像bug

  • 我刚刚部署了“违规”作用域模块的新版本,但没有区别,出现了同样的错误。
  • 我运行了npm install并且在问题环境中获取模块没有问题

所以,对我来说不固定...再次。

我有另一个专用模块给我404消息,即使它似乎可以解析正确的版本(必须在某处正确读取内容),并且似乎尝试下载与NPM相同的tar url。

这次我删除.npmrc的注册表(身份验证除外),以使其正常工作!

根本没有一致性,随机玩“ .npmrc似乎是暂时的。

我正在尝试推广Yarn,但是我们公司中的每位工程师(正确地)都说Yarn是“不稳定”,“无法使用”,“不可靠”,“不适用于私有模块”,“无法使用CI服务器”等。

我想知道私有NPM注册表是否正在与用户代理做“笨拙”的事情! <-疯狂的猜测。

为了更好地理解这一点,我们可能需要核心贡献者的一些投入。 @bestander ,有什么见解吗?

我们使用的私有软件包不多,因此此功能的关注点较少。
Afaik的大多数问题都是由社区解决的。
这是一个很好的机会来修复它。
我认为npm注册中心不会对基于UA的响应做任何事情,很可能是出于某种原因根本没有传递令牌。

好吧,所以我分叉了纱线,摆弄了一下。 似乎在获取tarball之前,或者在发送第一个请求之后,它丢失了令牌。

yarn add v0.23.0-0
verbose 0.227 current time: 2017-03-06T20:25:18.877Z
info No lockfile found.
[1/4] Resolving packages...
⠁ { authorization: 'Bearer MY_TOKEN_IS_HERE' } <<<<<----- here it uses my token for the request
verbose 0.409 Performing "GET" request to "https://registry.npmjs.org/@ovos-media%2flib-director".
verbose 1.306 Request "https://registry.npmjs.org/@ovos-media%2flib-director" finished with status code 200.
{} <--- token is gone
verbose 1.316 Performing "GET" request to "https://registry.npmjs.org/bluebird".
{} <--- token is gone
verbose 1.318 Performing "GET" request to "https://registry.npmjs.org/jwt-decode".
verbose 1.531 Request "https://registry.npmjs.org/bluebird" finished with status code 200.
verbose 1.572 Request "https://registry.npmjs.org/jwt-decode" finished with status code 200.
[2/4] Fetching packages...
https: /@ovos-media/lib-director/-/lib-director-0.4.1.tgz https://registry.yarnpkg.com/@ovos-media/lib-director/-/lib-director-0.4.1.tgz
{} <--- token is gone
verbose 1.597 Performing "GET" request to "https://registry.yarnpkg.com/@ovos-media/lib-director/-/lib-director-0.4.1.tgz".
verbose 2.663 Error: https://registry.yarnpkg.com/@ovos-media/lib-director/-/lib-director-0.4.1.tgz: Request failed "404 Not Found"
    at Request.res (/home/ubuntu/yarn/lib/fetchers/tarball-fetcher.js:232:20)
    at emitOne (events.js:90:13)
    at Request.emit (events.js:182:7)
    at Request.onRequestResponse (/home/ubuntu/yarn/node_modules/request/request.js:986:10)
    at emitOne (events.js:90:13)
    at ClientRequest.emit (events.js:182:7)
    at HTTPParser.parserOnIncomingClient (_http_client.js:469:21)
    at HTTPParser.parserOnHeadersComplete (_http_common.js:103:23)
    at TLSSocket.socketOnData (_http_client.js:359:20)
    at emitOne (events.js:90:13)
error An unexpected error occurred: "https://registry.yarnpkg.com/@ovos-media/lib-director/-/lib-director-0.4.1.tgz: Request failed \"404 Not Found\"".

当我在发送请求之前在npm-registry.js中显式设置authorization标头时,一切正常。 因此,似乎在纱线中存在一些错误,而不是在服务器端。

编辑:

好的,因此在进一步检查之后,会出现此问题,因为在npm-registry.js -> https://github.com/yarnpkg/yarn/pull/2598/files#diff中检查是否应设置授权标头会返回false -b053bee294c216269844e5874039b6caR62
这又发生了,因为它将yarnpkg注册表代理与npmjs注册表进行了比较。

https://registry.yarnpkg.com/@ovos-media/lib-director/-/lib-director-0.4.1.tgz https://registry.npmjs.org/

好的,所以我想出了如何在不更改纱线源代码的情况下为我们解决此问题。
这基本上是@rogchap发布的内容,但是(在我们的例子中)是相反的:

registry=https://registry.npmjs.org/
@ovos-media:registry=https://registry.yarnpkg.com/
//registry.npmjs.org/:_authToken=your-auth-token

或者,或者完全摆脱注册表:

//registry.npmjs.org/:_authToken=your-auth-token

这似乎可行,因为然后yarn不会对所涉及的软件包使用不同的注册表来获取信息和tarball。 但是,我不确定为什么yarn会将这两者混合在一起,并且我认为auth令牌的检查可能会以某种方式更改/改进。

你下一步怎么做?
记录解决方法或对Yarn进行更改?

在过去的几个小时中,我一直在尝试所有可能的组合,并且可以肯定地说,对于此问题没有可靠的解决方法。 @flipace知道这是否可以轻松解决吗? 您的两种方法都不适合我:(。

实际上,确实做到了。 删除注册表分配,只保留与auth-token的行似乎可以解决问题。 该死的错字。 谢谢@flipace!

@bestander我将在接下来的几天里尝试提出PR,在这种情况下纱线的行为不是应该的。 感谢@pleunv确认该替代方法也对您有效!

不幸的是,该解决方法对我不起作用😿

@willrstern您可以张贴您的.npmrc吗?

啊,删除.yarnrc对我有用。 内容是:

# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
# yarn lockfile v1


registry "https://registry.npmjs.org/"
email <email>
lastUpdateCheck 1489181224804
username <username>

请注意, npmjs.org注册表是我在对为什么它不起作用进行故障排除时添加的,因此它不是有问题的配置。

@flipace .npmrc是上述各种解决方法,包括仅令牌行。

〜这些变通办法都不适合我〜

实际上,如果我将其放入我的docker文件中,它将起作用:

RUN echo -e "registry=https://registry.npmjs.org/\n//registry.npmjs.org/:_authToken=\${NPM_AUTH_TOKEN}\nsatoshipay:registry=https://registry.npmjs.org/" > /usr/src/app/.npmrc
RUN yarn

我的问题范围是@satoshipay

我和同事遇到了这个问题...在安装节点v7.7.4 ,通过npm login重新登录到npm,一切正常。

@Levino您可以运行yarn config list并查看yarn是否正在拾取.npmrc文件吗? 在#521中, @ BohdanTkachenko同样解决了该问题。 至少这对我也有用:)

提醒您,欢迎社区提供PR,目前核心团队中没有人对此进行调查

@bestander可能有问题的核心团队提供任何指示吗?
我们当前的解决方法是回到使用npm😞

在package-resolver或package-fetcher中的某个位置。

2017年5月16日,星期二,06:29,Roger Chapman [email protected]
写道:

@bestander https://github.com/bestander是否有来自
核心团队可能在哪里出现问题?
我们当前的解决方法是回到使用npm😞

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

对于所有遇到此问题的用户,请在项目目录及其上方的每个父目录中检查.npmrc文件。 如果存在,它将覆盖主目录中的.npmrc文件。 我的团队成员遇到了这个问题。 他在不同的.npmrc文件中设置了不同的令牌。

我还有其他地方要看。 这些问题通常与yarn installCI中范围内的私有软件包的使用有关。 昨天我又遇到了这个问题。 创建新服务的团队成员尚未在其本地.npmrc中将registry.npmjs.org配置为作用域的注册表。 这导致了yarn.lock具有所有包的registry.yarnpkg.com链接(包括作用域的链接)的事实。 有趣的是,它在本地工作,但在CI中失败了。 所以我删除了yarn.lock并在我的机器上重新创建它,在.npmrc文件中的作用域中设置了registry.npmjs.org 。 现在yarn.lock文件仅具有指向registry.npmjs.org 。 我推了新的yarn.lock,CI顺利通过了。

谢谢!

在cwd中也有.npmrc有助于我们使用gitlab-ci。

我在Docker容器+ yarn 0.26.1遇到了相同的问题(在Mac上本地安装正常)。

.npmrc是:

<strong i="8">@binded</strong>:registry=https://registry.npmjs.com/
//registry.npmjs.org/:_authToken=${NPM_TOKEN}

NPM_TOKEN设置正确。 出现以下错误:

====>> cat .npmrc
  #!/bin/bash -eo pipefail
cat .npmrc
//registry.npmjs.org/:_authToken=${NPM_TOKEN}
====>> build
  #!/bin/bash -eo pipefail
build
engines.node (package.json):  7
engines.npm (package.json):   unspecified (use default)
v7.10.0 is already installed.
Now using node v7.10.0 (npm v4.2.0)
default -> 7 (-> v7.10.0 *)
Using default npm version: 4.2.0
Resolving yarn version 0.26 via semver.io...
Downloading and installing yarn (0.26.1)...
Installed yarn 0.26.1
Installing node modules (yarn.lock)
yarn install v0.26.1
[1/4] Resolving packages...
[2/4] Fetching packages...
error An unexpected error occurred: "https://registry.yarnpkg.com/@binded/binded-client/-/binded-client-1.3.2.tgz: Request failed \"404 Not Found\"".
info If you think this is a bug, please open a bug report with the information provided in "/ci/project/yarn-error.log".
info Visit https://yarnpkg.com/en/docs/cli/install for documentation about this command.
Error: Exited with code 1
Step failed
Task failed

我还尝试了以下.npmrc

registry=http://registry.npmjs.org/
//registry.npmjs.org/:_authToken=${NPM_TOKEN}
<strong i="16">@binded</strong>:registry=https://registry.npmjs.com/

我不确定这是否相关,但是我的yarn.lock列表(解析为https://registry.yarnpkg.com/...而不是https://registry.npmjs.com/... ):

"@binded/binded-client@^1.3.2":
  version "1.3.2"
  resolved "https://registry.yarnpkg.com/@binded/binded-client/-/binded-client-1.3.2.tgz#0c29ed98436084b39420020a533df26da3ebbda3"

更新:如果删除yarn.lock ,则安装成功。
更新:看起来像安装[email protected]解决了我的问题(我想我以前使用[email protected]

@olalonde我有同样的错误。 将计算机上的注册表设置为https://registry.npmjs.org/并创建yarn.lock对我来说解决了这个问题。

你好,

由于我遇到了同样的问题,并且设法解决了这个问题,所以我要分享我的经验。
我尝试了所有random解决方法,但是正如@rogchap所说-回到npm对我

使用npm成功安装后, yarn install停止提供404 Not Found

我不知道发生了什么以及如何解决。
我会继续关注这个问题。 希望有人能解决这个谜。

最好,
普格罗夫

此问题随机出现在Codeship版本上。 任何进展或想法是什么原因造成的?

大家好,我只想与您分享0.27.5中的问题已解决。 供参考: https :
这个问题现在似乎可以解决。

感谢您的跟进, @ pgergov

我今天也有这个问题。 我将注册表更改为github tarball url。 我找不到npmjs网址,所以我尝试在这里找到Github。
https://github.com/{USER}/{REPO}/tarball/{BRANCH}

只是将其放在此处,以防有人遇到与我相同的问题。

我的最新版本为0.27.5。 我也遇到“请求失败404找不到纱线”错误。 将版本降级到0.27.3是可行的。

@panalbish您可以尝试0.28.2或尝试更新您的身份验证令牌以查看其是否有效。

@panalbish感谢您的建议。 降级至0.27.3可行。
@BYK我尝试了0.28.2和0.28.4,它们都失败了。 尝试从github下载代码时出现错误

yarn install v0.27.5
warning package.json: No license field
warning [email protected]: No license field
[1/4] Resolving packages...
[2/4] Fetching packages...
error An unexpected error occurred: "https://codeload.github.com/soda0289/typescript-eslint-parser/tar.gz/840978a594dd659cfa2b40d8672ce7a742864623: Request failed \"404 Not Found\"".

如果我不得不猜测可能是它将auth令牌发送到github域,导致404。将尝试在今晚进行更多调查。

似乎此问题涵盖了该问题:
https://github.com/yarnpkg/yarn/issues/3907

#3907的重复项。

似乎在执行yarn (或yarn install )命令之前删除yarn.lock可以为我解决问题。

似乎在执行纱线(或纱线安装)命令之前删除yarn.lock可以为我解决问题。

然后,您应该完全停止使用纱线。 yarn.lock文件是保证“可复制的构建”的文件。 您永远都不想删除它。

好吧冷静点这取决于我尝试使用的应用程序本身。
顺便说一句package.json是否足以构建自身?

从技术上讲是。 锁定文件保证您将使用与团队中其他所有人相同的版本。 如果出于某种原因您不在乎,则可以删除该锁定文件,而Yarn将从头开始创建一个新文件。

话虽如此,但很好奇它解决了您的问题,因为我们在此跟踪的问题与配置参数有关。 也许您的锁定文件引用的是自那时以来已删除的URL? 可能是通过强制推送删除的git commit?

这是我收到的实际消息:

vagrant @ homestead :〜/ Projects / l5b.dev $纱线
纱线安装v0.27.5
[1/4]解决包裹...
[2/4]正在获取软件包...
错误发生意外错误:“ https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-2.7.0.tgz :请求失败\” 404未找到\“

再次尝试安装作为Laravel应用程序的存储库安装步骤)。 npm在本地主机(无用)和在线上都可以正常工作,但是yarn输出该错误。

好吧,不再搜索:

image

npm也不运气:

image

也许webpack组织在安装后决定取消发布此版本。

嗯, npm install虽然警告提示,但安装完成。 但是警告不是错误。
我正试图抓住这些JS东西。 我站在jQuery时代,需要加快速度。

好吧冷静点这取决于我尝试使用的应用程序本身。

我并不是说没有冒犯。 很抱歉,如果有人采取了。

顺便说一句,package.json是否足以构建自身?

您可能需要阅读以下内容: https :

yarn.lock文件
在package.json中,npm和Yarn都跟踪项目的依赖关系的文件,版本号并不总是准确的。 相反,您可以定义一系列版本。 这样,您可以选择软件包的特定主要版本和次要版本,但允许npm安装可能修复某些错误的最新补丁。
在语义版本控制的理想世界中,补丁发布不会包含任何重大更改。 不幸的是,这并不总是正确的。 npm所采用的策略可能导致两台机器具有相同的package.json文件,安装了不同版本的软件包,可能会引入错误。
为避免软件包版本不匹配,将精确安装的版本固定在锁定文件中。 每次添加模块时,Yarn都会创建(或更新)yarn.lock文件。 这样,您可以保证另一台机器安装了完全相同的软件包,同时仍在package.json中定义了一系列允许的版本。
在npm中,npmrinkwrap命令也会生成一个锁定文件,并且npm install在读取package.json之前先读取该文件,就像Yarn首先读取yarn.lock一样。 这里的重要区别在于,Yarn始终创建和更新yarn.lock,而npm默认不创建一个,而仅在存在时更新npm-shrinkwrap.json。

因此,如果您不关心固定版本以避免“随机”生成,而不是删除yarn.lock文件并运行yarn ,则应将文件保留在原处并使用npm install (将忽略yarn.lock文件)

您的项目在线吗?

@Tpojka尝试在本地(!)删除yarn.lock文件和node_modules ,然后在本地运行yarn 。 然后提交新的yarn.lock文件,看看是否有帮助

背景:这会将您丢失的软件包的固定版本更改为仍与package.json定义的版本范围兼容的最新版本。 如果当前固定在您的yarn.lock那一者尚未发布,则应该有新的那一者。

是的,由于这个怪异的问题,我长期以来一直使用0.18纱线,并且可以确认一次去除纱线的重复运动似乎可以解决该问题。 据我所知,它在某种程度上与旧纱线版本的锁定文件有关。

不幸的是, @ sottbessler,这似乎是随机的。 有时取下yarn.lock会起作用,有时却不会。 还有其他奇怪的事情。 它可以解析该软件包(因为它知道要下载哪个版本),但是可以解析tar文件的404。

面对此问题,我的Mac机器上可以使用,但服务器上不能使用。

通过遵循https://github.com/yarnpkg/yarn/issues/3765#issuecomment -327890328和https://github.com/yarnpkg在yarn v1.0.1中(适用于本地,在CI和Heroku buildpack中使用)

always-auth=true
https://registry.npmjs.org/:_authToken=${NPM_TOKEN}

我在这里仍然有问题。

我尝试将always-auth=true到我的.npmrc文件中。 我还尝试在//registry.npmjs.org/:_authToken=...前面添加一个显式https: //registry.npmjs.org/:_authToken=... 。 那也没有任何区别。

事情对于Yarn 0.27.3很好,但是任何1.0.0 +似乎都有这个问题(我当前正在使用yarn 1.2.1 )。

我在这里想念什么吗?

尝试从.npmrc除去//registry.npmjs.org/:_authToken=${NPM_TOKEN} 。 这是对纱线1.0.0+上的@范围私有私有软件包(Unix / Windows / OSX)唯一适用于我们的东西。

@pleunv谢谢! 使用Yarn 1.3.2对我有用,但前提是我也运行了以下命令:

yarn config set registry https://registry.npmjs.org

我的印象是默认的Yarn注册表只是npmjs.org的代理。 因此,我不确定为什么这是必要的,但是就我而言,这是绝对必要的(经过和不经过测试)。

我不敢相信会有更多的人对此没有麻烦。 我本以为每个非开源项目都会为此而绊倒?!?

我仅在进行部署时对此进行了测试(Dockerfile进行构建)。 我很快就会在开发机器上尝试一下(今天早上想弄清楚这个问题花费了我一个多小时的时间)。

@pleunv @xogeny您可以为我们提供一个小的

@BYK除非我缺少任何东西,否则任何此类测试用例都将必然需要私有存储库,并且为了成功测试yarn我们需要共享某种私有访问令牌。 充其量似乎很尴尬。

似乎最好的方法是针对Yarn项目本身(通过廉价,最小的组织帐户)建立一些私有存储库,以便您可以通过CircleCI或本地dev /通过环境变量提供访问令牌来进行这些测试。测试环境。 这样,它将是您的令牌,您无需与任何人共享。

但我愿意接受其他建议。 我只是不太了解如何组织事情。

是的,私有示波器很难为您提供复制。 无论哪种方式,我们都会在CI上将其与任何私有作用域的程序包一起放在默认的nodeJS docker容器上。

@BYK我可以设置Bintray npm存储库的试用版以及随附的repro-repo,如果有帮助,可以通过邮件向您发送访问密钥。

@SpainTrain非常感谢,设置

always-auth=true
<strong i="7">@scope</strong>:always-auth=true

到顶部.npmrc与固定它yarn v1.3.2

在我的情况下,当我更新yarn.lock来解决npmjs.com而不是yarnpkg.com私有软件包时,问题就消失了,就像这样-

"@myco/pak1@>=0.0.8":
  version "0.0.11"
  resolved "https://registry.yarnpkg.com/@myco/pak1/-/pak1-0.0.11.tgz#8b5c53bd7378d7f00554fd4813ad9d332d0d87dc"
                             ^^^^^^^ change this
  resolved "https://registry.npmjs.com/@myco/pak1/-/pak1-0.0.11.tgz#8b5c53bd7378d7f00554fd4813ad9d332d0d87dc"
  dependencies:
    lodash "4.*"

这些解决方案都不适合我。 我们甚至没有使用私有包,而只是使用公共包的公共分支。 将yarn.lock更改为参考npmjs.com,并在安装纱线之前使用了纱线注册表设置。

由于某些原因,CircleCI在纱线安装步骤期间间歇性地在“ codeload” github url上获取了404。

我还可以确认,按照@xogeny的建议运行yarn config set registry https://registry.npmjs.org之后yarn add @org/priv-module不再404并且正确安装了软件包。

但是,这是有趣的部分-我切换回原始注册表( yarn config set registry https://registry.yarnpkg.com ),再次执行rm -rf *; yarn cache cleanyarn add @org/priv-module ,我不再能够重现404,即已安装正确地。 我敢肯定,我在这里并不疯狂- yarn add @org/priv-module第一次做了404。

registry.yarnpkg.com代理registry.npmjs.org到底如何? 成功获取后是否感觉像填充了某些缓存?

我在macOS 10.13.2上的v1.3.4上,而.npmrc只是普通的'ol //registry.npmjs.org/:_authToken={auth token}

这里同样的问题。 这是TravisCI的日志

$ node --version
v8.9.4
$ npm --version
5.6.0
$ nvm --version
0.33.8
before_install.1
0.42s$ yarn config set registry https://registry.npmjs.org
yarn config v1.3.2
success Set "registry" to "https://registry.npmjs.org".
before_install.2
0.43s$ yarn cache clean
yarn cache v1.3.2
success Cleared cache.
$ yarn
yarn install v1.3.2
[1/4] Resolving packages...
[2/4] Fetching packages...
error An unexpected error occurred: "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz: Request failed \"404 Not Found\"".
info If you think this is a bug, please open a bug report with the information provided in "/home/travis/build/grundiss/contenter/yarn-error.log".
info Visit https://yarnpkg.com/en/docs/cli/install for documentation about this command.

有趣的是:在本地一切正常。

只是为了完成,这里有一些失败的circleci构建,并且404软件包并不总是相同的:

https://circleci.com/gh/EnoahNetzach/gnodsidfjgi/5
https://circleci.com/gh/EnoahNetzach/gnodsidfjgi/7

我已经(希望)通过遵循此说明并创建一个脱机镜像来解决了我的问题,但这当然不是任何人都可以做到的。

哇。 原来我的问题不是这个问题的一部分,而是更全球化的一部分: https :

妈的,现在我们也开始遇到这个问题。 私有范围的程序包。 随机复制-有时(某些版本)有效,有时则无效。

在我们的项目中看到此错误。 这很奇怪,因为我在手动点击URL时没有得到404:

Trace:
  Error: https://codeload.github.com/types/npm-v8flags/tar.gz/de224ae1cd5fd7dbb4e7158a6cc7a29e5315930d: Request failed "404 Not Found"
      at Request.handleRequestError (C:\Users\stewx\AppData\Roaming\nvm\v6.10.0\node_modules\yarn\lib\fetchers\tarball-fetcher.js:203:20)
      at emitOne (events.js:96:13)
      at Request.emit (events.js:188:7)
      at Request.onRequestResponse (C:\Users\stewx\AppData\Roaming\nvm\v6.10.0\node_modules\yarn\node_modules\request\request.js:1068:10)
      at emitOne (events.js:96:13)
      at ClientRequest.emit (events.js:188:7)
      at HTTPParser.parserOnIncomingClient (_http_client.js:474:21)
      at HTTPParser.parserOnHeadersComplete (_http_common.js:99:23)
      at TLSSocket.socketOnData (_http_client.js:363:20)
      at emitOne (events.js:96:13)

我们通过稍微切换URL来解决了所有此类错误。 避免使用tar / gz并使用tarball,即:

"package_name":"https://github.com/somebody/package_name/tarball/master"

如果您的软件包是在npmjs.org上私下托管的,则从.npmrc删除<strong i="5">@scope</strong>:registry=https://registry.npmjs.org/行对我们有用—大概是由于yarnpkg是npmjs.org的CDN的问题

我今天要展出
error An unexpected error occurred: “https://registry.yarnpkg.com/@types/webpack/-/webpack-3.8.10.tgz: Request failed \“404 Not Found\“”.
不是私人仓库:(

为我+1。 今天也开始体验它。 尝试在我们的CI上安装webpack。

同样在这里大声笑。 尝试最新

error An unexpected error occurred: "https://registry.yarnpkg.com/@types/webpack/-/webpack-4.1.1.tgz: Request failed \"404 Not Found\"".

在我的情况下,我有一个本地.npmrc ,它为特定范围定义了一个私有注册表,我只需要在文件顶部添加registry=https://registry.npmjs.org/ 。 导致:

# .npmrc
registry=https://registry.npmjs.org/

<strong i="8">@acme</strong>:registry=https://acme.jfrog.io/acme/api/npm/npm/
//acme.jfrog.io/acme/api/npm/npm/:_auth=YYYYYYYYYYYYYYYYYYYYYYYYYY
//acme.jfrog.io/acme/api/npm/npm/:username=username
//acme.jfrog.io/acme/api/npm/npm/:[email protected]
//acme.jfrog.io/acme/api/npm/npm/:always-auth=true

使用CircleCI时,还需要安装404纱线。

去除纱锁

这对我有用。 进一步挖掘,发现纱线锁中的URL错误。

纱线锁使用的是registry.yarnpkg.com,它将在CircleCI上进行404处理(不知道为什么它在本地工作)。

产生效果的配置完成了:

- run: echo "//registry.npmjs.org/:_authToken=$NPM_AUTH_TOKEN" > ~/.npmrc
- run: yarn config set registry https://registry.npmjs.org/
- run: yarn

谢谢,我也通过删除yarn.lock解决了这个问题。

对我来说,失败的命令是yarn add gatsby-plugin-react-helmet react-helmet

我能够运行yarn upgrade (出于好奇而尝试),然后上述命令起作用了。 不知道为什么会这样,但是如果有人提出解释,我将不胜感激。

可能需要npm,因为在纱线库上没有相关性

纱线+ CI +材料有相同的问题

yarn install v1.22.4
[1/4] Resolving packages...
[2/4] Fetching packages...
error An unexpected error occurred: "https://registry.yarnpkg.com/@material-ui/core/-/core-4.11.0.tgz: Request failed \"404 Not Found\"".
info If you think this is a bug, please open a bug report with the information provided in "/builds/springs-apps/flopanda/flopanda-front-end/yarn-error.log".
info Visit https://yarnpkg.com/en/docs/cli/install for documentation about this command.
此页面是否有帮助?
0 / 5 - 0 等级