Yarn: Falha ao instalar dependências no espaço de trabalho: espera-se que o pacote do espaço de trabalho exista

Criado em 8 jan. 2020  ·  56Comentários  ·  Fonte: yarnpkg/yarn

Você quer solicitar um recurso ou relatar um bug ?
Erro

Qual é o comportamento atual?
yarn install falha com:

error An unexpected error occurred: "expected workspace package to exist for \"@babel/template\"".

O erro começou a ocorrer após a atualização do fio para 1.19 e ainda persiste na última versão estável 1.21.1

Erros semelhantes podem ser observados em # 7797 e # 7734

Se o comportamento atual for um bug, forneça as etapas para reproduzir.
O erro pode ser reproduzido ao instalar dependências em https://github.com/callstack/haul

  1. git clone [email protected]:callstack/haul.git
  2. cd haul
  3. yarn install

Qual é o comportamento esperado?

yarn install deve instalar dependências com sucesso.

Mencione seu node.js, yarn e versão do sistema operacional.

  • Nó: 12.14.1 / 13 (reproduzível em ambos)
  • fio: 1.21.1
  • SO: macOS 10.15.2

Comentários muito úteis

yarn policies set-version 1.18.0 funciona para mim - o yarn mudará automaticamente para esta versão apenas para o projeto! tão legal!
https://classic.yarnpkg.com/en/docs/cli/policies/

Todos 56 comentários

Experimentando o mesmo comportamento ao tentar adicionar uma dependência a um pacote de espaço de trabalho:

yarn workspace @scope/mypackage add npm-package

error An unexpected error occurred: "expected workspace package to exist for \"@babel/highlight\"".

Detalhes semelhantes

Yarn version: 
  1.21.1

Node version: 
  10.17.0

Platform: 
  darwin x64

OS
  macOS 10.15.2

Enfrentando o mesmo problema com o nó @ 10 :

An unexpected error occurred: "expected workspace package to exist for \"lru-cache\"".
Node: 10.15.3
yarn: 1.21.1
OS: macOS 10.15.1

Eu encontrei uma solução alternativa (temporária) executando o recurso de

> yarn policies set-version 1.18.0

o que basicamente significa:

Sob o capô, o comando simplesmente fará o download da versão de arquivo único do repositório GitHub, armazenará dentro do seu projeto (dentro da pasta .yarn / releases) e, finalmente, atualizará sua configuração para apontar para o novo arquivo (usando yarn-path )

Também vendo isso em Yarn 1.21.1. Posso reproduzir o erro em meu repositório ao executar yarn upgrade-interactive , _mas_ executar manualmente as versões em package.json por algum motivo.

Encontrando isso também:

error An unexpected error occurred: "expected workspace package to exist for \"string-length\"".

Ao tentar adicionar uma dependência não relacionada dentro de um em meus pacotes de espaço de trabalho yarn add @reduxjs/toolkit . Adicionar manualmente o dep ao package.json seguido por yarn funciona.

Tentei yarn cache clean e excluiu as pastas yarn.lock e node_modules, sem alteração.

▶ yarn --version
1.21.1

Mesmo erro aqui:

$ yarn workspace @scope/web add ramda
error An unexpected error occurred: "expected workspace package to exist for \"chalk\"".
info If you think this is a bug, please open a bug report with the information provided in "/home/user/projects/web/apps/web/yarn-error.log".
info Visit https://yarnpkg.com/en/docs/cli/add for documentation about this command.
error Command failed.
Exit code: 1

Adicionando yarn-error.log

Arguments: 
  /home/user/.nvm/versions/node/v10.13.0/bin/node /home/user/.nvm/versions/node/v10.13.0/lib/node_modules/yarn/lib/cli.js add ramda

PATH: 
  /home/user/.yarn/bin:/home/user/.config/yarn/global/node_modules/.bin:/home/user/.yarn/bin:/home/user/.config/yarn/global/node_modules/.bin:/home/user/.nvm/versions/node/v10.13.0/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games:/home/user/Android/Sdk/emulator:/home/user/Android/Sdk/tools:/home/user/Android/Sdk/tools/bin:/home/user/Android/Sdk/platform-tools:/home/user/Android/Sdk/emulator:/home/user/Android/Sdk/tools:/home/user/Android/Sdk/tools/bin:/home/user/Android/Sdk/platform-tools

Yarn version: 
  1.21.1

Node version: 
  10.13.0

Platform: 
  linux x64

Trace: 
  Invariant Violation: expected workspace package to exist for "chalk"
      at invariant (/home/user/.nvm/versions/node/v10.13.0/lib/node_modules/yarn/lib/cli.js:2314:15)
      at _loop2 (/home/user/.nvm/versions/node/v10.13.0/lib/node_modules/yarn/lib/cli.js:94898:9)
      at PackageHoister.init (/home/user/.nvm/versions/node/v10.13.0/lib/node_modules/yarn/lib/cli.js:94957:19)
      at PackageLinker.getFlatHoistedTree (/home/user/.nvm/versions/node/v10.13.0/lib/node_modules/yarn/lib/cli.js:48743:20)
      at PackageLinker.<anonymous> (/home/user/.nvm/versions/node/v10.13.0/lib/node_modules/yarn/lib/cli.js:48754:27)
      at Generator.next (<anonymous>)
      at step (/home/user/.nvm/versions/node/v10.13.0/lib/node_modules/yarn/lib/cli.js:310:30)
      at /home/user/.nvm/versions/node/v10.13.0/lib/node_modules/yarn/lib/cli.js:328:14
      at new Promise (<anonymous>)
      at new F (/home/user/.nvm/versions/node/v10.13.0/lib/node_modules/yarn/lib/cli.js:5301:28)

npm manifest: 
{
   ...
}

Tenho enfrentado os mesmos problemas desde v1.19 .
yarn upgrade-interactive tornou-se inutilizável; Não seria possível aplicar as atualizações de versão.

Depois de atualizar para v1.21 não consigo mais yarn install . Sempre gera este erro:

espera-se que exista pacote de espaço de trabalho para ...

O downgrade para 1.18 corrigiu ambos os problemas.

Devo salientar que esses problemas ocorrem apenas em um projeto, que é um monorepo que usa lerna e yarn workspaces .

Mesma experiência que @raspo
Não consigo mais instalar pacotes da linha de comando em meu monorepo habilitado para área de trabalho.

Eu não queria ter que fazer o downgrade do yarn, já que ele vem do meu gerenciador de pacotes, então usei o npx como uma solução terrível.

npx [email protected] add your-deps-here

Obtenha também 1,17 a 1,22. Parece ser um punhado de pacotes - começando com istanbul-lib-instrument . Então jest-snapshot então cssstyle repetidamente.

Invariant Violation: expected workspace package to exist for "istanbul-lib-instrument"
    at invariant (/usr/local/Cellar/yarn/1.22.0/libexec/lib/cli.js:2314:15)
    at _loop2 (/usr/local/Cellar/yarn/1.22.0/libexec/lib/cli.js:94959:9)
    at PackageHoister.init (/usr/local/Cellar/yarn/1.22.0/libexec/lib/cli.js:95018:19)
    at PackageLinker.getFlatHoistedTree (/usr/local/Cellar/yarn/1.22.0/libexec/lib/cli.js:48743:20)
    at PackageLinker.<anonymous> (/usr/local/Cellar/yarn/1.22.0/libexec/lib/cli.js:48754:27)
    at Generator.next (<anonymous>)
    at step (/usr/local/Cellar/yarn/1.22.0/libexec/lib/cli.js:310:30)
    at /usr/local/Cellar/yarn/1.22.0/libexec/lib/cli.js:328:14
    at new Promise (<anonymous>)
    at new F (/usr/local/Cellar/yarn/1.22.0/libexec/lib/cli.js:5301:28)

lerna.json

{
  "packages": [
    "packages/*",
    "apps/*"
  ],
  "version": "1.0.17",
  "npmClient": "yarn",
  "useWorkspaces": true
}

package.json:

{
...
"workspaces": {
    "packages": [
      "apps/*",
      "packages/*"
    ],
    "nohoist": [
      "**/webpack-dev-server"
    ]
  },
...
}

Também estou recebendo essa regressão alguma notícia?

mesmo aqui, atualização interativa monorepo e yarn no mac

Invariant Violation: expected workspace package to exist for "stack-utils"
    at invariant (/usr/local/Cellar/yarn/1.22.0/libexec/lib/cli.js:2314:15)
    at _loop2 (/usr/local/Cellar/yarn/1.22.0/libexec/lib/cli.js:94959:9)
    at PackageHoister.init (/usr/local/Cellar/yarn/1.22.0/libexec/lib/cli.js:95018:19)
    at PackageLinker.getFlatHoistedTree (/usr/local/Cellar/yarn/1.22.0/libexec/lib/cli.js:48743:20)
    at PackageLinker.<anonymous> (/usr/local/Cellar/yarn/1.22.0/libexec/lib/cli.js:48754:27)
    at Generator.next (<anonymous>)
    at step (/usr/local/Cellar/yarn/1.22.0/libexec/lib/cli.js:310:30)
    at /usr/local/Cellar/yarn/1.22.0/libexec/lib/cli.js:328:14
    at new Promise (<anonymous>)
    at new F (/usr/local/Cellar/yarn/1.22.0/libexec/lib/cli.js:5301:28)
$ yarn lerna --version
3.20.2
$ yarn version
1.22.0
$ node --version
v13.8.0

Como uma solução temporária, use algo yvm e use a versão 1.18.0 . Funciona para mim

yarn policies set-version 1.18.0 funciona para mim - o yarn mudará automaticamente para esta versão apenas para o projeto! tão legal!
https://classic.yarnpkg.com/en/docs/cli/policies/

Acabei de ter o mesmo problema em um monorepo Lerna + Yarn (v1.22). Resolvido a recriação de yarn.lock .

Parece uma duplicata de # 7734.

Encontrando isso para @ storybook / api. A solução alternativa de @nerdyman parece ter funcionado para mim nesse ínterim.

Eu não queria ter que fazer o downgrade do yarn, já que ele vem do meu gerenciador de pacotes, então usei o npx como uma solução terrível.

npx [email protected] add your-deps-here

é trabalho para mim

Eu tive o mesmo problema e embora excluir yarn.lock e executar yarn install (ou yarn workspace some-workspace bla bla bla ) funcionasse, o problema era que eu estava usando uma versão mais recente do fio comparada aos membros da minha equipe .

Portanto, a solução foi usar yarn policies . Basicamente, você executa yarn policies set-policy e isso irá baixar a última versão estável do fio e salvá-la em .yarn/ e também atualizar seu .yarnrc para apontar para a versão do fio baixada. Desta forma, você garante que todos estão usando a mesma versão de fio e evitar este tipo de problemas.

Mais informações aqui: https://classic.yarnpkg.com/en/docs/cli/policies#toc -policies-set-version

Portanto, a solução para este problema é rebaixar yarn , o yarn 2.0 será divertido

@remors desculpas se eu ler sarcasmo incorretamente em sua resposta. Não vi ninguém enviar um PR para corrigir isso no 1.x. É possível que, em outras questões, algumas pessoas tenham enviado correções para este ou outros bugs que foram rejeitados, e isso me deixaria triste. Se houver muitos PRs para 1.x que estão sendo ignorados, espero que os mantenedores dêem as boas-vindas aos membros da comunidade que desejam ajudar a manter o 1.x. Sem PRs e manutenção da comunidade, é difícil culpar alguém por querer se concentrar em seu ramo de desenvolvimento ativo.

Isso geralmente acontece se você estiver usando uma versão diferente do mesmo pacote npm nos espaços de trabalho.

Digamos que você tenha @scope/www e @scope/api espaços de trabalho e ambos têm eslint npm pacote. Mas @scope/www está usando [email protected] enquanto @scope/api está usando [email protected] . Além disso, você tem [email protected] na raiz packages.json .

Então, se você tentar instalar um pacote em uma das áreas de trabalho, receberá o erro error An unexpected error occurred: "expected workspace package to exist for \"eslint\"". . Porque nenhuma de suas eslint versões são idênticas.

Depois de torná-los idênticos, você não deverá obter nenhum erro.

Isso é interessante, obrigado pelos detalhes adicionais @abdullahceylan - Só por curiosidade: como o Yarn antes de 1.19.2 (sem erros) lidava com essa situação?

Também me dá o mesmo erro @friederbluemle

Eu estava tendo esse problema porque tinha versões diferentes de @babel/core em minhas áreas de trabalho, exatamente como disse @abdullahceylan . Atualizar @babel/core para a mesma versão resolveu o problema para mim! 🙏

Gostaria que houvesse uma mensagem mais específica para esse erro.

Também tive este problema, mas conseguiu resolvê-lo:
O motivo é que eu tinha um pacote (eslint) em um dos meus pacotes e na área de trabalho raiz. Removido do espaço de trabalho raiz e tudo estava funcionando novamente.

Descobri que meus problemas vieram de @babel/core em nextjs foi corrigido em 7.7.7 e alguns outros módulos exigiam ^7.10.0 então é por isso que o yarn coloca uma pasta node_module extra dentro de seu pacote para resolver os conflitos de dependência.

Resolvi usando resolutions fazendo

  "resolutions": {
    "**/@babel/core": "7.10.2"
  },

E fez um yarn install / npx lerna bootstrap

No aplicativo em que estou trabalhando, consegui resolver esse bug alterando

"workspaces": [
  "packages/**/*"
],

para

"workspaces": [
  "packages/@org1/*",
  "packages/@org2/*",
  "packages/*"
],

Talvez yarn esteja detectando acidentalmente um espaço de trabalho aninhado dentro do node_modules de um dos meus pacotes? Eu não tive tempo para investigar isso. Eu estava usando o fio 1.22.4.

EDITAR: Isso parece ser corroborado pelas afirmações de que consolidar versões de dependência (que por sua vez as retira do diretório packages ) também pode resolver esse problema.

o que funcionou para mim é

yarn lerna add npmpackage --scope=@scope/my-package

você pode usar npx vez de yarn aqui

O mesmo aqui yarn add explode completamente ao tentar fazer qualquer pacote. Corrija 🙏

De repente, topando com isso do nada.

Edit: eu tinha um pacote local para meu mono-repo com o mesmo nome de uma dependência npm, conforme mencionado por @abdullahceylan.

Tive o mesmo problema com yarn add . No meu caso, estava reclamando de eslint . Eu defini manualmente a versão eslint para 7.2.0 .
Eu examinei meu yarn.lock para verificar quais dependências estavam solicitando uma versão diferente de eslint (apenas usei a ferramenta "Encontrar" com a palavra-chave eslint ).
Percebi que muitas dependências exigiam a versão 6.8.0 e estavam tentando instalá-la.

Resolvi o problema configurando a versão eslint para 6.8.0 .
Você pode escolher adicionar o parâmetro resolutions ao seu arquivo package.json . No meu caso, teria sido como

"resolutions": {
  "eslint": "6.8.0"
}

Espero que possa ajudar alguém.

Muito obrigado @dxit , isso me ajuda 😄

Alguém conseguiu identificar o que exatamente causa isso? Haverá uma correção incluída na v1?

Batendo na mesma coisa em um monorepo que usa içamento. Trabalhando em torno disso com o hack npx para instalar deps.

Supondo que você esteja usando o Lerna, @mmun sua correção pode estar relacionada a uma ordem de resolução incorreta em relação aos pacotes que dependem uns dos outros. Veja aqui para mais detalhes.

Eu tive este erro com o ambiente abaixo:

Node: 10.20.1
Yarn: 1.22.4

Ele estava trabalhando com a configuração abaixo.

Node: 10.15.3
Yarn: 1.13.0

Tentei definir Yarn como 1.18.0 mas parece que não funciona com o Nó 10.20.1

Nota para mim mesmo: revisite isto assim que a próxima versão de yarn for lançada.

@dkempner fio 1 não terá novas versões, eu não acho ... Se elas estiverem, está terrivelmente quieto neste repo (apenas 1 commit nos últimos 2 meses). Você pode tentar com yarn @ berry tho

Depois de testar cada versão, o bug começa em 1.19.2, pelo menos para Windows. Portanto, alguma mudança entre 1.19.1 - 1.19.2 quebras

@ thefat32 - Sim, correto. Não apenas no Windows. Tenho este comando em meu histórico que utilizo com frequência como uma solução alternativa sempre que vejo o erro:

npx [email protected] upgrade-interactive

Eu tenho o mesmo problema ao adicionar alguma dependência ao monorepo de fios.

error An unexpected error occurred: "expected workspace package to exist for \"jest\"".

Olá pessoal, tive exatamente o mesmo problema!

An unexpected error occurred: "expected workspace package to exist for \"@jest-cli"".
Eu estava tendo esse problema porque tinha uma versão diferente de jest-cli em meu espaço de trabalho. Resolvido isso atualizando todos os pacotes para a versão mais recente.

@abdullahceylan Você sabe se esse ainda é o caso com as dependências _transitivas_? Tenho a mesma falha que todos os outros, mas no meu caso a dependência não é minha, então não sei como poderia atualizá-la. E workspaces.nohoist muda alguma coisa?

@customcommander TBH Não encontrei uma situação como a sua, mas a primeira coisa que tentaria em tal situação seria usar algo como "**/pagkage-name" para a opção nohoist .

@customcommander TBH Não encontrei uma situação como a sua, mas a primeira coisa que tentaria em tal situação seria usar algo como "**/pagkage-name" para a opção nohoist .

porque?

Atualmente experimentando isso com lerna

Reduzimos isso para começar a acontecer para nós em v1.19.2

Nó: v12.13.0
fio: funciona <= v1.19.1
SO: macOS 10.15.6

https://github.com/yarnpkg/yarn/compare/v1.19.1...v1.19.2

yarn policies set-version 1.19.1 trabalha para nós com lerna

Alterar as políticas de fios para yarn policies set-version 1.18.0 funcionou para mim também.
Eu estava em:
Fio : 1.22.5
: 10,21
SO : Arch Linux (x64)

Não tenho uma solução além das já sugeridas neste tópico, mas parece que PR https://github.com/yarnpkg/yarn/pull/7289 é onde a regressão foi introduzida e, especificamente, essas linhas .

A versão desse bug que tenho experimentado é especialmente confusa porque a dependência mostrada na mensagem de erro foi instalada apenas na raiz do espaço de trabalho, e não em qualquer um dos espaços de trabalho aninhados.

Criei uma reprodução mínima aqui: https://github.com/smably/yarn-workspaces-hoisting-bug. Nesse caso, eu estava recebendo expected workspace package to exist for "pretty-quick" , embora pretty-quick apareça apenas uma vez na árvore. O erro real parece estar acontecendo quando o yarn tenta içar as dependências transitivas de pretty-quick .

Tentei vasculhar a base de código do yarn para ver se conseguia consertar o problema, mas alguns dos testes de unidade estão falhando em minha máquina, o link de "contribuição" no README está quebrado e tive muitos problemas para depurar porque eu não fui capaz de fazer console.log ou debugger instruções funcionarem (estou supondo porque yarn gera processos filhos e eles não herdam o --inspect do nó

No meu caso, pode ser o confilcts de versão de @babel/core . Resolvi: verifique a versão instalada por yarn why @babel/core , adicione resolução ao pacote que não é a mesma versão para unificar a versão.

Adicionar isso no caso de outra pessoa (que Deus os ajude) tem um problema semelhante, pois acabei de passar metade do meu fim de semana depurando / basicamente reformatando meu computador ...

Eu configurei yarn policies set-version 1.19.1 pensando que estava tudo bem. Poucas horas depois, fiz uma compilação do meu aplicativo Next.js e estava recebendo este Error occurred prerendering page... . Eu literalmente tentei de tudo e acabei de perceber que fazer yarn policies set-version 1.19.1 era a causa.

O que é ainda mais estranho é que destrói meu projeto local. Se eu mudar para um branch estável, excluir todos os módulos de nó, yarn.lock etc etc, voltar para a versão mais recente yarn e executar yarn install , em seguida, construir meu aplicativo Next.js novamente, obtenho o mesmo erro.

Não tenho ideia do que está acontecendo tbh. Eu literalmente reinstalei o node, yarn etc. A única solução era excluir o aplicativo e cloná-lo novamente.

Tive o mesmo problema com o pacote eslint . Acontece que o problema era que a raiz do meu espaço de trabalho tinha eslint como uma dependência de desenvolvimento, mas eu também tinha um pacote de espaço de trabalho que dependia de um pacote npm que dependia de uma versão diferente do eslint, que presumo que acabou interrompendo o processo de içamento de alguma forma. Tudo o que fiz foi verificar se todos os pacotes dependiam da mesma versão do eslint e o erro foi embora.

também enfrentando esse problema. A solução de @export-mike funciona como um hotfix, obrigado

Existe algum roteiro oficial de resposta / correção da equipe de desenvolvimento do yarn sobre isso?

Minha solução foi mudar para pnpm. Recomendo!

Esta página foi útil?
0 / 5 - 0 avaliações