Yarn: `yarn install --production` no instala las dependencias correctas

Creado en 12 oct. 2016  ·  115Comentarios  ·  Fuente: yarnpkg/yarn

Cuando se ejecuta yarn install --production , no instala las dependencias requeridas de forever . Esto parece estar relacionado con tener nodemon en devDependencies .

Respuesta de error:

> forever app.js
module.js:457
    throw err;
    ^
Error: Cannot find module 'minimatch'

He creado una aplicación de prueba aquí:
https://github.com/donovan-graham/yarn-example-app

#  Steps to reproduce error
git clone https://github.com/donovan-graham/yarn-example-app.git
cd yarn-example-app
yarn install --production
npm start

#  temporary step to bypass error
rm -rf node_modules
yarn remove nodemon
yarn install --production
npm start
cat-bug

Comentario más útil

Hola a todos, lamento que estén teniendo este problema desde hace bastante tiempo.
Me asignaré este problema a mí mismo y ahora es de alta prioridad, intentaré solucionarlo durante las vacaciones.
La ayuda y las relaciones públicas con pruebas de rotura aisladas o una solución (idealmente) son muy bien recibidas.

Todos 115 comentarios

@ Daniel15 Supongo que esto se debe a que nodemon tiene la última versión de minimatch.

La función del enlazador actualmente incluye tanto departamentos como departamentos de desarrollo. Para la producción de argumentos, esto debe evitarse.

Incluso en la instalación de hilo normal sin argumento de producción. Solo se instala la última versión en la ruta real. Esto también tiene que comprobarse.

Tengo un problema similar cuando ejecuto yarn install --production y luego intento ejecutar mi compilación usando webpack (ejecutar yarn install funciona bien).

> NODE_ENV=production webpack -p --config webpack/production.config.js

module.js:457
    throw err;
    ^

Error: Cannot find module 'graceful-fs'
    at Function.Module._resolveFilename (module.js:455:15)
    at Function.Module._load (module.js:403:25)
    at Module.require (module.js:483:17)
    at require (internal/module.js:20:19)

y si mal no recuerdo, los intentos anteriores mostraron errores similares con otro paquete (no solo graceful-fs )

Me estoy volviendo muy similar también ... yarn install funciona bien. pero con la bandera --production obtengo esto:

> yarn install --production

yarn install v0.15.1
error npm-shrinkwrap.json found. This will not be updated or respected. See [TODO] for more information.
[1/4] Resolving packages...
[2/4] Fetching packages...
warning [email protected]: The engine "rhino" appears to be invalid.
warning [email protected]: The platform "win32" is incompatible with this module.
info "[email protected]" is an optional dependency and failed compatibility check. Excluding it from installation.
warning [email protected]: The engine "rhino" appears to be invalid.
warning [email protected]: The engine "rhino" appears to be invalid.
[3/4] Linking dependencies...
[4/4] Building fresh packages...
[1/1] ⠐ node-sass:     at Module.require (module.js:367:17)
[-/1] ⠐ waiting...
[-/1] ⠐ waiting...
[-/1] ⠐ waiting...
error C:\vagrant\ebroker-quoteengine\node_modules\node-sass: Command failed.
Exit code: 1
Command: C:\WINDOWS\system32\cmd.exe
Arguments: /d /s /c node scripts/install.js
Directory: C:\vagrant\ebroker-quoteengine\node_modules\node-sass
Output:
module.js:341
    throw err;
    ^

Error: Cannot find module 'tough-cookie'
    at Function.Module._resolveFilename (module.js:339:15)
    at Function.Module._load (module.js:290:25)
    at Module.require (module.js:367:17)
    at require (internal/module.js:16:19)
    at Object.<anonymous> (C:\vagrant\ebroker-quoteengine\node_modules\node-sass\node_modules\request\lib\cookies.js:3:13)
    at Module._compile (module.js:413:34)
    at Object.Module._extensions..js (module.js:422:10)
    at Module.load (module.js:357:32)
    at Function.Module._load (module.js:314:12)
    at Module.require (module.js:367:17)
    at SpawnError (C:\Users\nathan.white\AppData\Roaming\npm\node_modules\yarnpkg\lib\errors.js:18:1)
    at ChildProcess.<anonymous> (C:\Users\nathan.white\AppData\Roaming\npm\node_modules\yarnpkg\lib\util\child.js:107:15)
    at emitTwo (events.js:100:13)
    at ChildProcess.emit (events.js:185:7)
    at maybeClose (internal/child_process.js:827:16)
    at Socket.<anonymous> (internal/child_process.js:319:11)
    at emitOne (events.js:90:13)
    at Socket.emit (events.js:182:7)
    at Pipe._onclose (net.js:471:12)

Puede reproducir un problema similar con:

npm init --yes
yarn add --dev nodemon
yarn add gulp
rm -rf node_modules
yarn install --production

Esto instalará is-glob pero no su dependencia is-extglob :

> yarn why is-glob
yarn why v0.16.0
# ...
info Reasons this module exists
   - "nodemon#chokidar" depends on it
   - "gulp#liftoff#findup-sync" depends on it

> yarn why is-extglob
yarn why v0.16.0
#  ...
info This module exists because "nodemon#chokidar#is-glob" depends on it.

Parece "olvidar" la ruta de dependencia gulp#liftoff mientras atraviesa ..?

EDITAR: Ejemplo más pequeño:

npm init --yes
yarn add --dev [email protected]
yarn add [email protected]
rm -rf node_modules
yarn --prod
node -e "require('is-glob')"

También confirmó que eliminar devDependencies antes de ejecutar yarn --prod instala el árbol de dependencias correcto.

Mi equipo de software se encontró con este problema, específicamente con el paquete prr que es una dependencia de less y pouchdb . Muchos otros paquetes también faltaban en la compilación --production pero prr fue el primero en causar una falla en nuestro producto. Este problema ha sido un éxito para nosotros, ya que el tamaño de nuestro instalador aumentaría significativamente si incluyéramos los paquetes de desarrollo, por lo que hemos vuelto a usar npm.

FWIW: Puedo solucionar el problema eliminando la sección devDependencies de package.json antes de ejecutar yarn en producción.

como dijo @gihrig , ejecutar npm prune --production puede eliminar las devDependencies, lo que ayuda a solucionar este problema.

como dijo @gihrig , ejecutar npm prune --production puede eliminar devDependencies que ayuda a solucionar este problema.

La principal ventaja de Yarn sobre npm es un directorio node_modules es decir, lo mismo en desarrollo, CI y producción lista para usar. ¿Ejecutar npm prune --production produce el mismo comportamiento?

Mi solución alternativa actual es instalar devDependencies en producción. El disco es barato (especialmente en AWS) y una instalación determinista es mucho más importante para mí que el espacio en disco. Así que mi "solución" es simplemente actuar como si yarn --production no existiera en este momento.

@tanx npm prune --production simplemente elimine devDependencies. Y en mis pruebas siempre se eliminaron los mismos módulos. Por otro lado, sí, el espacio en disco es barato, por lo que tal vez actuar como si yarn --production no saliera es una mejor solución :)

@tanx npm

Esta es precisamente la mentalidad de "funciona en mi máquina" descrita en la publicación del blog Yarn . El problema es que está permitiendo que npm cambie el estado de node_modules sin la verificación de integridad del hilo a través del archivo yarn.lock .

Con suerte, las soluciones alternativas discutidas serán discutidas pronto por una actualización de hilo para respetar los departamentos de desarrollo y producción. Mientras tanto, de hecho hay mucho de qué quejarse con el truco de posprocesamiento "npm prune".

La cosa yarn why descrita anteriormente no tiene relación alguna. Parece ser solo un efecto secundario de cómo el código why busca los paquetes.

Intenté encontrar una buena manera de hacer esto sin agregar una pasada adicional para propagar la visibilidad después de que se recorrió el gráfico una vez. ¿No está seguro de si sería aceptable dividir la visibilidad en un paso separado ...?

También hay algunos casos extremos interesantes, no se trata solo de resolver correctamente la visibilidad:

  • A es una dependencia opcional de una dependencia de producción
  • B es una dependencia no opcional de una dependencia de desarrollo
  • C es una dependencia no opcional de ambos

En ese caso, el indicador opcional de C depende de dev vs. prod. En dev no sería opcional, en prod sería opcional. Simplemente heredar la bandera opcional de uno de los padres (o heredarla siempre del padre prod) podría generar rarezas.

Esto todavía no está arreglado en 0.17.2 😢

Repro: https://gist.github.com/SimenB/2b179f3b6bca73ba824e1273ea38aed3

yarn

node index.js # works

yarn --prod

node index.js # explodes

/ cc @jkrems

Tampoco me parece fijo en 0.17.2 (HearthSim / Joust # 169).

Voy a volver a abrirlo ya que se puede reproducir fácilmente con las instrucciones de

@wyze ¿ El problema podría ser la instalación en sí y no la poda?

rm -rf node_modules/ && yarn && npm prune --production && node index.js falla con el mismo error.

Aunque rm -rf node_modules/ && npm i && npm prune --production && node index.js funciona.

Sin embargo, supongo que yarn y npm no deben usarse al mismo tiempo, por lo que podría ser una coincidencia que produzca el mismo error.

Diferenciar node_modules después de npm i y yarn muestra que el hilo no genera "_requiredBy" , probablemente por qué npm prune estropea después de un yarn install . Sin embargo, esa información está disponible en el archivo de bloqueo, por lo que no debería ser un problema, ¿verdad?

El mismo problema aquí, estábamos probando la construcción de producción en la ventana acoplable y descubrimos que con yarn --production faltaba el paquete mime incluso si el módulo principal send (utilizado por express) estaba instalado .

Creo que este problema debe manejarse con la máxima prioridad porque causa compilaciones impredecibles.

Como solución alternativa, simplemente estoy eliminando la sección devDependencies de package.json en mi script de compilación.

$ jq 'del(.devDependencies)' package.json > tmp.json && mv tmp.json package.json

Siguiendo el consejo de @ dy-dx, escribí un punto de entrada personalizado para que Docker corrija este problema durante el desarrollo:

En primer lugar, debe instalar jq en su Dockerfile agregando esta línea en algún lugar:

RUN apt-get update && \
    apt-get install -y jq

Luego agregue este script en algún lugar y utilícelo como Dockerfile [ENTRYPOINT] o docker-compose entrypoint entrypoint.sh

Use su comando preferido para Dockerfile [CMD] o docker-compose command Eg npm start

El mismo script podría usarse en CI con alguna edición para construir la imagen

@SimenB ¿Puedes eliminar el node_modules de tu paquete entries-test e intentarlo?

https://registry.yarnpkg.com/entries-test/-/entries-test-1.0.1.tgz#1bf192e414ceadd0cf4b77b3969df32de2985d50

Extraiga la bola de alquitrán v1.0.1, hay una carpeta node_modules con define-properties y otros módulos. Y ninguno de ellos tiene ningún archivo *.js .

@torifat Eh, ¿cómo llegó eso? No debería ser posible incluir un node_modules sin usar bundledDependencies ...
Intentaré presionar uno limpio (he eliminado los proyectos, tendré que volver a crear).

@torifat Parece que es culpa del hilo.

$ mkdir some-dir && cd some-dir && yarn init -y && yarn add object.entries && yarn pack && tar -ztvf some-dir-v1.0.0.tgz
drwxr-xr-x  0 0      0           0 Nov 27 10:36 package
-rw-r--r--  0 0      0         972 Oct 15  2015 package/node_modules/define-properties/CHANGELOG.md
-rw-r--r--  0 0      0        1080 Oct 15  2015 package/node_modules/define-properties/LICENSE
-rw-r--r--  0 0      0        2725 Oct 15  2015 package/node_modules/define-properties/README.md
-rw-r--r--  0 0      0        1593 Oct 15  2015 package/node_modules/define-properties/package.json
-rw-r--r--  0 0      0        3798 Aug 21 11:09 package/node_modules/es-abstract/CHANGELOG.md
-rw-r--r--  0 0      0        1080 Jul 29  2015 package/node_modules/es-abstract/LICENSE
-rw-r--r--  0 0      0        1812 Aug 13  2015 package/node_modules/es-abstract/README.md
-rw-r--r--  0 0      0        1989 Aug 21 11:09 package/node_modules/es-abstract/package.json
-rw-r--r--  0 0      0        1207 Jan  4  2016 package/node_modules/es-to-primitive/CHANGELOG.md
-rw-r--r--  0 0      0        1082 Nov  1  2015 package/node_modules/es-to-primitive/LICENSE
-rw-r--r--  0 0      0        2180 Nov  1  2015 package/node_modules/es-to-primitive/README.md
-rw-r--r--  0 0      0        1558 Jan  4  2016 package/node_modules/es-to-primitive/package.json
-rw-r--r--  0 0      0        1074 Sep 22  2014 package/node_modules/foreach/LICENSE
-rw-r--r--  0 0      0         593 Sep 22  2014 package/node_modules/foreach/Readme.md
-rw-r--r--  0 0      0        1297 Sep 22  2014 package/node_modules/foreach/package.json
-rw-r--r--  0 0      0        1052 Feb 14  2016 package/node_modules/function-bind/LICENSE
-rw-r--r--  0 0      0        1488 Feb 14  2016 package/node_modules/function-bind/README.md
-rw-r--r--  0 0      0        1619 Feb 14  2016 package/node_modules/function-bind/package.json
-rw-r--r--  0 0      0        1060 Jul 24  2015 package/node_modules/has/LICENSE-MIT
-rw-r--r--  0 0      0         239 Jul 24  2015 package/node_modules/has/README.mkd
-rw-r--r--  0 0      0         782 Jul 24  2015 package/node_modules/has/package.json
-rw-r--r--  0 0      0        1839 Feb 28  2016 package/node_modules/is-callable/CHANGELOG.md
-rw-r--r--  0 0      0        1082 May 19  2015 package/node_modules/is-callable/LICENSE
-rw-r--r--  0 0      0        1978 Aug 12  2015 package/node_modules/is-callable/README.md
-rw-r--r--  0 0      0        1983 Feb 28  2016 package/node_modules/is-callable/package.json
-rw-r--r--  0 0      0         421 Sep 27  2015 package/node_modules/is-date-object/CHANGELOG.md
-rw-r--r--  0 0      0        1082 Mar 13  2015 package/node_modules/is-date-object/LICENSE
-rw-r--r--  0 0      0        1751 Aug 12  2015 package/node_modules/is-date-object/README.md
-rw-r--r--  0 0      0        1420 Sep 27  2015 package/node_modules/is-date-object/package.json
-rw-r--r--  0 0      0         482 Jan 30  2015 package/node_modules/is-regex/CHANGELOG.md
-rw-r--r--  0 0      0        1081 Jan 15  2014 package/node_modules/is-regex/LICENSE
-rw-r--r--  0 0      0        1623 Jan 28  2015 package/node_modules/is-regex/README.md
-rw-r--r--  0 0      0        1512 Jan 30  2015 package/node_modules/is-regex/package.json
-rw-r--r--  0 0      0         121 Jan 26  2015 package/node_modules/is-symbol/CHANGELOG.md
-rw-r--r--  0 0      0        1082 Jan 24  2015 package/node_modules/is-symbol/LICENSE
-rw-r--r--  0 0      0        1469 Jan 24  2015 package/node_modules/is-symbol/README.md
-rw-r--r--  0 0      0        1214 Jan 26  2015 package/node_modules/is-symbol/package.json
-rw-r--r--  0 0      0        6992 Jul  5 19:14 package/node_modules/object-keys/CHANGELOG.md
-rw-r--r--  0 0      0        1080 Oct 15  2015 package/node_modules/object-keys/LICENSE
-rw-r--r--  0 0      0        2460 Oct 15  2015 package/node_modules/object-keys/README.md
-rw-r--r--  0 0      0        1955 Jul  5 19:14 package/node_modules/object-keys/package.json
-rw-r--r--  0 0      0         560 Oct  6  2015 package/node_modules/object.entries/CHANGELOG.md
-rw-r--r--  0 0      0        1082 Sep  2  2015 package/node_modules/object.entries/LICENSE
-rw-r--r--  0 0      0        2339 Sep  2  2015 package/node_modules/object.entries/README.md
-rw-r--r--  0 0      0        1636 Oct  6  2015 package/node_modules/object.entries/package.json
-rw-r--r--  0 0      0         145 Nov 27 10:36 package/package.json

El uso de npm pack funciona como se esperaba (en el mismo directorio).

$ npm pack && tar -ztvf some-dir-1.0.0.tgz
-rw-r--r--  0 501    20        145 Nov 27 10:36 package/package.json
-rw-r--r--  0 501    20       2460 Nov 27 10:36 package/yarn.lock

Parece que Yarn está tan empeñado en incluir changelog , readme y package.json que incluso los incluye desde node_modules ...

Usando [email protected]

@torifat Publicado 1.0.2 ahora (usando npm para evitar el error que se acaba de mencionar), sigue siendo el mismo problema

Se abrió el n. ° 2047 por el error con respecto a node_modules, pero es una pista falsa en este problema, ya que mi reproducción sigue siendo válida con un tarball adecuado publicado.

(perdón por el correo no deseado a las personas suscritas, lo dejaré ahora)

@SimenB Gracias por tu tiempo. He descubierto el error.

Esto parece estar relacionado con # 2104, que acabo de abrir. El node_modules/.bin después de la instalación del OP:

$ ll node_modules/.bin
total 16
lrwxr-xr-x  1 samuelreed  staff    22B Dec  1 11:16 forever -> ../forever/bin/forever
lrwxr-xr-x  1 samuelreed  staff   109B Dec  1 11:16 nodemon -> ../../../../../Library/Caches/Yarn/npm-nodemon-1.11.0-226c562bd2a7b13d3d7518b49ad4828a3623d06c/bin/nodemon.js

Corregido a través de # 2116.

¿Se ha fusionado el # 2116? No puedo verlo en el historial de confirmaciones. Parece prematuro cerrar un montón de problemas antes de que haya una solución disponible, al menos en la versión maestra, si no en una versión etiquetada. Además, parece que el número 2116 está fallando en las tres comprobaciones. ¿Me estoy perdiendo de algo?

Esto sigue siendo un problema en v0.18.0, que incluye (# 2116).

sí, puedo confirmar que este problema todavía está presente en 0.18.0

Por lo que veo, el # 2116 debería haber introducido pruebas para este problema ( test.concurrent ('- el indicador de producción ignora las dependencias de desarrollo' ... o me equivoco?

La prueba no verifica el comportamiento correcto de las dependencias transitivas:
En mi caso, el problema es una dependencia compartida (lru-cache) entre una dependencia prod (minimatch v2.0.0) y una dev (useragent v2.1.9). Ese dependiente compartido no está instalado en --production , aunque la dependencia prod lo requiera.

@beheh No minimatch usa lru-cache , ¿quizás por eso no está instalado en producción?

Estoy haciendo algunas pruebas con 0.18.0

dep { A->B }
devDep { B }
OK
A,B are installed.
dep { A->C->D }
devDep { B->C->D }
OK
A,C,D are installed.
dep { E->A->C->D }
devDep { B->C->D }
KO
E,A,C are installed but D is missing.

este es el caso ilustrado por @SimenB

"dependencies": {
    "entries-test": "^1.0.1"
  },
  "devDependencies": {
    "object.values": "^1.0.3"
  }

@SharpEdgeMarshall Gracias por la prueba. Lo agregaré como un caso de prueba.

@torifat podría considerar reabrir esto también

@SharpEdgeMarshall Intenté lo siguiente y está funcionando. Necesito resolver el problema real.

screenshot 2016-12-06 21 18 44

@SimenB necesita verificar antes de reabrir. Esto podría suceder también debido a optionalDependencies . Que tiene otro tema abierto.

@torifat mi repro todavía ocurre: https://github.com/yarnpkg/yarn/issues/761#issuecomment -260975012

EDITAR: que no tiene deps opcionales, grep optional yarn.lock sale con 1

Sin embargo, ahora falla en Error: Cannot find module 'object-keys' lugar de perder define-properties .

$ yarn why object-keys
yarn why v0.18.0
[1/4] 🤔  Why do we have the module "object-keys"...?
[2/4] 🚚  Initialising dependency graph...
[3/4] 🔍  Finding dependency...
[4/4] 🚡  Calculating file sizes...
info This module exists because "object.values#define-properties" depends on it.
✨  Done in 0.09s.

Parece que ahora maneja un nivel más profundo, pero luego falla

@SimenB Acabo de probar con tu:

{
  "dependencies": {
    "entries-test": "^1.0.1"
  },
  "devDependencies": {
    "object.values": "^1.0.3"
  }
}

Y me está funcionando bien. ¿Puedes hacer un yarn cache clean e intentarlo de nuevo?

No, falla

@SimenB ¿Puedes compartir tu archivo yarn.lock ?

$ rm -rf node_modules && rm yarn.lock && yarn cache clean && yarn && node index.js && yarn --prod && node index.js
yarn cache v0.18.0
success Cleared cache.
✨  Done in 0.07s.
yarn install v0.18.0
info No lockfile found.
[1/4] 🔍  Resolving packages...
[2/4] 🚚  Fetching packages...
[3/4] 🔗  Linking dependencies...
[4/4] 📃  Building fresh packages...
success Saved lockfile.
✨  Done in 0.92s.
yarn install v0.18.0
[1/4] 🔍  Resolving packages...
[2/4] 🚚  Fetching packages...
[3/4] 🔗  Linking dependencies...
[4/4] 📃  Building fresh packages...
✨  Done in 0.18s.
module.js:471
    throw err;
    ^

Error: Cannot find module 'object-keys'
    at Function.Module._resolveFilename (module.js:469:15)
    at Function.Module._load (module.js:417:25)
    at Module.require (module.js:497:17)
    at require (internal/module.js:20:19)
    at Object.<anonymous> (/Users/simbekkh/repos/ugh/node_modules/define-properties/index.js:3:12)
    at Module._compile (module.js:570:32)
    at Object.Module._extensions..js (module.js:579:10)
    at Module.load (module.js:487:32)
    at tryModuleLoad (module.js:446:12)
    at Function.Module._load (module.js:438:3)

Para mí, el ejemplo de SimenB no funciona con 0.18.0 incluso después de yarn cache clean

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


define-properties@^1.1.2:
  version "1.1.2"
  resolved "http://npm.office.crweb.it/define-properties/-/define-properties-1.1.2.tgz#83a73f2fea569898fb737193c8f873caf6d45c94"
  dependencies:
    foreach "^2.0.5"
    object-keys "^1.0.8"

entries-test@^1.0.1:
  version "1.0.2"
  resolved "http://npm.office.crweb.it/entries-test/-/entries-test-1.0.2.tgz#f1039aba3a2effc9c3a56b6b1180694b2789e4d5"
  dependencies:
    object.entries "^1.0.3"

es-abstract@^1.6.1:
  version "1.6.1"
  resolved "http://npm.office.crweb.it/es-abstract/-/es-abstract-1.6.1.tgz#bb8a2064120abcf928a086ea3d9043114285ec99"
  dependencies:
    es-to-primitive "^1.1.1"
    function-bind "^1.1.0"
    is-callable "^1.1.3"
    is-regex "^1.0.3"

es-to-primitive@^1.1.1:
  version "1.1.1"
  resolved "http://npm.office.crweb.it/es-to-primitive/-/es-to-primitive-1.1.1.tgz#45355248a88979034b6792e19bb81f2b7975dd0d"
  dependencies:
    is-callable "^1.1.1"
    is-date-object "^1.0.1"
    is-symbol "^1.0.1"

foreach@^2.0.5:
  version "2.0.5"
  resolved "http://npm.office.crweb.it/foreach/-/foreach-2.0.5.tgz#0bee005018aeb260d0a3af3ae658dd0136ec1b99"

function-bind@^1.0.2, function-bind@^1.1.0:
  version "1.1.0"
  resolved "http://npm.office.crweb.it/function-bind/-/function-bind-1.1.0.tgz#16176714c801798e4e8f2cf7f7529467bb4a5771"

has@^1.0.1:
  version "1.0.1"
  resolved "http://npm.office.crweb.it/has/-/has-1.0.1.tgz#8461733f538b0837c9361e39a9ab9e9704dc2f28"
  dependencies:
    function-bind "^1.0.2"

is-callable@^1.1.1, is-callable@^1.1.3:
  version "1.1.3"
  resolved "http://npm.office.crweb.it/is-callable/-/is-callable-1.1.3.tgz#86eb75392805ddc33af71c92a0eedf74ee7604b2"

is-date-object@^1.0.1:
  version "1.0.1"
  resolved "http://npm.office.crweb.it/is-date-object/-/is-date-object-1.0.1.tgz#9aa20eb6aeebbff77fbd33e74ca01b33581d3a16"

is-regex@^1.0.3:
  version "1.0.3"
  resolved "http://npm.office.crweb.it/is-regex/-/is-regex-1.0.3.tgz#0d55182bddf9f2fde278220aec3a75642c908637"

is-symbol@^1.0.1:
  version "1.0.1"
  resolved "http://npm.office.crweb.it/is-symbol/-/is-symbol-1.0.1.tgz#3cc59f00025194b6ab2e38dbae6689256b660572"

object-keys@^1.0.8:
  version "1.0.11"
  resolved "http://npm.office.crweb.it/object-keys/-/object-keys-1.0.11.tgz#c54601778ad560f1142ce0e01bcca8b56d13426d"

object.entries@^1.0.3:
  version "1.0.4"
  resolved "http://npm.office.crweb.it/object.entries/-/object.entries-1.0.4.tgz#1bf9a4dd2288f5b33f3a993d257661f05d161a5f"
  dependencies:
    define-properties "^1.1.2"
    es-abstract "^1.6.1"
    function-bind "^1.1.0"
    has "^1.0.1"

object.values@^1.0.3:
  version "1.0.4"
  resolved "http://npm.office.crweb.it/object.values/-/object.values-1.0.4.tgz#e524da09b4f66ff05df457546ec72ac99f13069a"
  dependencies:
    define-properties "^1.1.2"
    es-abstract "^1.6.1"
    function-bind "^1.1.0"
    has "^1.0.1"
$ rm -rf node_modules && rm yarn.lock && yarn cache clean && yarn && node index.js && rm -rf node_modules && rm yarn.lock && yarn cache clean && yarn --prod && node index.js
yarn cache v0.18.0
success Cleared cache.
✨  Done in 0.07s.
yarn install v0.18.0
info No lockfile found.
[1/4] 🔍  Resolving packages...
[2/4] 🚚  Fetching packages...
[3/4] 🔗  Linking dependencies...
[4/4] 📃  Building fresh packages...
success Saved lockfile.
✨  Done in 0.93s.
yarn cache v0.18.0
success Cleared cache.
✨  Done in 0.07s.
yarn install v0.18.0
info No lockfile found.
[1/4] 🔍  Resolving packages...
[2/4] 🚚  Fetching packages...
[3/4] 🔗  Linking dependencies...
[4/4] 📃  Building fresh packages...
success Saved lockfile.
✨  Done in 0.76s.
module.js:471
    throw err;
    ^

Error: Cannot find module 'object-keys'
    at Function.Module._resolveFilename (module.js:469:15)
    at Function.Module._load (module.js:417:25)
    at Module.require (module.js:497:17)
    at require (internal/module.js:20:19)
    at Object.<anonymous> (/Users/simbekkh/repos/ugh/node_modules/define-properties/index.js:3:12)
    at Module._compile (module.js:570:32)
    at Object.Module._extensions..js (module.js:579:10)
    at Module.load (module.js:487:32)
    at tryModuleLoad (module.js:446:12)
    at Function.Module._load (module.js:438:3)

Archivo de bloqueo:

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


define-properties@^1.1.2:
  version "1.1.2"
  resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.2.tgz#83a73f2fea569898fb737193c8f873caf6d45c94"
  dependencies:
    foreach "^2.0.5"
    object-keys "^1.0.8"

entries-test@^1.0.1:
  version "1.0.2"
  resolved "https://registry.yarnpkg.com/entries-test/-/entries-test-1.0.2.tgz#f1039aba3a2effc9c3a56b6b1180694b2789e4d5"
  dependencies:
    object.entries "^1.0.3"

es-abstract@^1.6.1:
  version "1.6.1"
  resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.6.1.tgz#bb8a2064120abcf928a086ea3d9043114285ec99"
  dependencies:
    es-to-primitive "^1.1.1"
    function-bind "^1.1.0"
    is-callable "^1.1.3"
    is-regex "^1.0.3"

es-to-primitive@^1.1.1:
  version "1.1.1"
  resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.1.1.tgz#45355248a88979034b6792e19bb81f2b7975dd0d"
  dependencies:
    is-callable "^1.1.1"
    is-date-object "^1.0.1"
    is-symbol "^1.0.1"

foreach@^2.0.5:
  version "2.0.5"
  resolved "https://registry.yarnpkg.com/foreach/-/foreach-2.0.5.tgz#0bee005018aeb260d0a3af3ae658dd0136ec1b99"

function-bind@^1.0.2, function-bind@^1.1.0:
  version "1.1.0"
  resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.0.tgz#16176714c801798e4e8f2cf7f7529467bb4a5771"

has@^1.0.1:
  version "1.0.1"
  resolved "https://registry.yarnpkg.com/has/-/has-1.0.1.tgz#8461733f538b0837c9361e39a9ab9e9704dc2f28"
  dependencies:
    function-bind "^1.0.2"

is-callable@^1.1.1, is-callable@^1.1.3:
  version "1.1.3"
  resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.3.tgz#86eb75392805ddc33af71c92a0eedf74ee7604b2"

is-date-object@^1.0.1:
  version "1.0.1"
  resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.1.tgz#9aa20eb6aeebbff77fbd33e74ca01b33581d3a16"

is-regex@^1.0.3:
  version "1.0.3"
  resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.3.tgz#0d55182bddf9f2fde278220aec3a75642c908637"

is-symbol@^1.0.1:
  version "1.0.1"
  resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.1.tgz#3cc59f00025194b6ab2e38dbae6689256b660572"

object-keys@^1.0.8:
  version "1.0.11"
  resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.0.11.tgz#c54601778ad560f1142ce0e01bcca8b56d13426d"

object.entries@^1.0.3:
  version "1.0.4"
  resolved "https://registry.yarnpkg.com/object.entries/-/object.entries-1.0.4.tgz#1bf9a4dd2288f5b33f3a993d257661f05d161a5f"
  dependencies:
    define-properties "^1.1.2"
    es-abstract "^1.6.1"
    function-bind "^1.1.0"
    has "^1.0.1"

object.values@^1.0.3:
  version "1.0.4"
  resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.0.4.tgz#e524da09b4f66ff05df457546ec72ac99f13069a"
  dependencies:
    define-properties "^1.1.2"
    es-abstract "^1.6.1"
    function-bind "^1.1.0"
    has "^1.0.1"

@SimenB Gracias. Parece que mi caché tuvo un problema. Después de borrar mi caché ahora está fallando. Pero, con un error diferente. Dame algo de tiempo para investigar.

Por cierto, recomiendo usar https://github.com/Mottie/Octopatcher en este hilo

Muy práctico con muchas líneas de salida

image

Dejaré de enviar spam ahora

@SimenB Fallo en v0.18.0 pero no se puede reproducir en el último master .

ACTUALIZACIÓN: ¡Extraño! Está fallando de nuevo 😕

@torifat puedo confirmar que no funciona con el maestro (v0.19.0)
rm -rf node_modules && rm yarn.lock && ../yarn/bin/yarn cache clean && ../yarn/bin/yarn && node index.js && rm -rf node_modules && rm yarn.lock && ../yarn/bin/yarn cache clean && ../yarn/bin/yarn --prod && node index.js

yarn cache v0.19.0-0
success Cleared cache.
Done in 0.58s.
yarn install v0.19.0-0
info No lockfile found.
[1/4] Resolving packages...
[2/4] Fetching packages...
[3/4] Linking dependencies...
[4/4] Building fresh packages...
success Saved lockfile.
Done in 10.18s.
yarn cache v0.19.0-0
success Cleared cache.
Done in 0.09s.
yarn install v0.19.0-0
info No lockfile found.
[1/4] Resolving packages...
[2/4] Fetching packages...
[3/4] Linking dependencies...
[4/4] Building fresh packages...
success Saved lockfile.
Done in 4.26s.
module.js:457
    throw err;
    ^

Error: Cannot find module 'object-keys'
    at Function.Module._resolveFilename (module.js:455:15)
    at Function.Module._load (module.js:403:25)
    at Module.require (module.js:483:17)
    at require (internal/module.js:20:19)
    at Object.<anonymous> (/home/sharpedge/git/Utility/YarnBug/node_modules/define-properties/index.js:3:12)
    at Module._compile (module.js:556:32)
    at Object.Module._extensions..js (module.js:565:10)
    at Module.load (module.js:473:32)
    at tryModuleLoad (module.js:432:12)
    at Function.Module._load (module.js:424:3)

Tengo los mismos problemas (algunos paquetes no se instalan con la bandera --production ) con el estable actual 0.17.10 :

curl -o- -L https://yarnpkg.com/install.sh | bash && ~/.yarn/bin/yarn install --production && rm -rf ~/.yarn

Pero cuando pruebo la compilación nocturna actual Yarn 0.19.0-20161207.1241 todos los paquetes necesarios se instalaron correctamente para mi aplicación:

wget https://yarnpkg.com/install.sh && chmod +x install.sh && ./install.sh --nightly && rm -f install.sh && ~/.yarn/bin/yarn install --production && rm -rf ~/.yarn

@SharpEdgeMarshall @SimenB ¿ Puede probar la última compilación nocturna y confirmar que el problema persiste?

Utilizado en mis contenedores Docker: https://gist.github.com/nodkz/b843d65a3430a4f510e5f5eb0cc759d2

@nodkz 18 está fuera y estable (¿creo?), pero como se puede ver en la publicación directamente encima de la suya, el maestro (al menos desde hace 2 días) todavía tiene el error

Creo que todavía requiere install yarn@rc :

'dist-tags': { rc: '0.18.0', latest: '0.17.10' },

Eso es nuevo entonces, obtuve 0.18 hace unos días con solo instalarlo. De todos modos, el error aún se puede reproducir en 0.18.

@nodkz Repro es:

{
  "dependencies": {
    "entries-test": "^1.0.1"
  },
  "devDependencies": {
    "object.values": "^1.0.3"
  }
}

Sí, también nos encontramos con problemas similares con nuestros proyectos:

rm -rf package.json yarn.lock node_modules && npm init --yes && yarn add --dev nodemon && yarn add glob-stream && yarn --prod && node -p "require('glob-stream')"

Falla tanto con 0.18 como con la última rama maestra.

Convenido. Aún puedo reproducir con la última versión.

Creo que mi problema es similar o el mismo que este. La compilación está fallando en Heroku, pero solo para el entorno de producción. El almacenamiento en caché está deshabilitado.

Resolving node version ^7.2.1 via semver.io...
       Downloading and installing node 7.2.1...
       Using default npm version: 3.10.10
       Resolving yarn version (latest) via semver.io...
       Downloading and installing yarn (0.18.1)...
       Installed yarn 0.18.1
-----> Restoring cache
       Skipping cache restore (disabled by config)
-----> Building dependencies
       Installing node modules (yarn)
       yarn install v0.18.1
       [1/4] Resolving packages...
       [2/4] Fetching packages...
       warning [email protected]: The platform "linux" is incompatible with this module.
       info "[email protected]" is an optional dependency and failed compatibility check. Excluding it from installation.
       [3/4] Linking dependencies...
       [4/4] Building fresh packages...
       error /tmp/build_0e4ff736ad0f25dc816a47543687fefc/bbb7b6e751dde291f65dea175f41a26862eef28f/node_modules/bcrypt: Command failed.
       Exit code: 1
       Command: sh
       Arguments: -c node-pre-gyp install --fallback-to-build
       Directory: /tmp/build_0e4ff736ad0f25dc816a47543687fefc/bbb7b6e751dde291f65dea175f41a26862eef28f/node_modules/bcrypt
       Output:
       module.js:472
       throw err;
       ^

       Error: Cannot find module 'abbrev'
       at Function.Module._resolveFilename (module.js:470:15)
       at Function.Module._load (module.js:418:25)
       at Module.require (module.js:498:17)
       at require (internal/module.js:20:19)
       at Object.<anonymous> (/tmp/build_0e4ff736ad0f25dc816a47543687fefc/bbb7b6e751dde291f65dea175f41a26862eef28f/node_modules/nopt/lib/nopt.js:10:14)
       at Module._compile (module.js:571:32)
       at Object.Module._extensions..js (module.js:580:10)
       at Module.load (module.js:488:32)
       at tryModuleLoad (module.js:447:12)
       at Function.Module._load (module.js:439:3)
       info Visit https://yarnpkg.com/en/docs/cli/install for documentation about this command.
-----> Build failed

También tengo este problema. Todavía estoy usando yarn install para la producción a partir del momento, ya que yarn install --production no instala correctamente las dependencias correctas.

Me temo que no puedo hacer eso, ya que está codificado en yarn install --production en el paquete de compilación de Heroku, creo (ref https://github.com/heroku/heroku-buildpack-nodejs/issues/337)

@adamreisnz Lo siento, me refería al problema original, no al tuyo.

Para solucionar el problema, le sugiero que coloque todos los devDependencies en dependencies por ahora hasta que se solucione el problema.

@dashmug Ah está bien, no hay problema.

De todos modos, prefiero usar npm en Heroku por ahora hasta que Yarn sea más estable, en lugar de jugar con soluciones piratas. He puesto yarn.lock en mi .gitignore para que no se cargue en el repositorio / heroku. De esta manera, todavía puedo usar Yarn localmente, pero no afectará las compilaciones en Heroku.

@adamreisnz Eso yarn , ¿no crees?

@dashmug No realmente, al menos, no para nosotros. No lo estoy usando para bloquear versiones de paquetes en su lugar. Tenemos dependencias muy actualizadas y no tenemos problemas relacionados con "funciona en mi máquina". Mi principal razón para pasar a yarn over npm fue por la velocidad, que para aplicaciones complejas con muchas dependencias vi pasar de 5 minutos por npm install a 22 segundos con hilo.

Mientras el hilo sea inestable, puedo vivir con un proceso de construcción un poco más lento en Heroku, siempre que pueda usar hilo localmente para el desarrollo y tener instalaciones rápidas :)

Yarn se anuncia como un reemplazo directo de npm. Sin embargo, algunos de los problemas que hemos encontrado y que aún están sin resolver, como éste, nos impiden usarlo como tal. Por tanto, lo veo como una herramienta extra en la actualidad, que es útil para una cosa, pero todavía no existe para otra. Sin embargo, no tengo ninguna duda de que funcionará muy bien con el tiempo :)

Esto parece estar arreglado para mí en 0.18.1.

Heroku estaba usando 0.18.1 en el momento en que falló, por lo que aún no se ha solucionado.

Este problema se solucionó para mí en 0.18.1.

Mi reproducción anterior se corrigió con 0.18.1 🎉

Lo intentaré mañana con una aplicación real

0.18.1 soluciona mis problemas. Soy un campista feliz 🎉

Probé 0.18.1 con una aplicación no trivial que fallaba anteriormente y parece funcionar ahora. 🎉

Supongo que lo intentaré de nuevo pronto :)

Lo siento, todavía no funciona con 0.18.1;

-----> Node.js app detected
-----> Creating runtime environment

       NPM_CONFIG_LOGLEVEL=error
       NPM_CONFIG_PRODUCTION=true
       NODE_ENV=production
       NODE_MODULES_CACHE=true
-----> Installing binaries
       engines.node (package.json):  ^7.2.1
       engines.npm (package.json):   unspecified (use default)

       Resolving node version ^7.2.1 via semver.io...
       Downloading and installing node 7.2.1...
       Using default npm version: 3.10.10
       Resolving yarn version (latest) via semver.io...
       Downloading and installing yarn (0.18.1)...
       Installed yarn 0.18.1
-----> Restoring cache
       Loading 2 from cacheDirectories (default):
       - node_modules
       - bower_components (not cached - skipping)
-----> Building dependencies
       Installing node modules (yarn)
       yarn install v0.18.1
       [1/4] Resolving packages...
       [2/4] Fetching packages...
       warning [email protected]: The platform "linux" is incompatible with this module.
       info "[email protected]" is an optional dependency and failed compatibility check. Excluding it from installation.
       [3/4] Linking dependencies...
       [4/4] Building fresh packages...
       error /tmp/build_c86802dccae94b3fb074d3b88f3f63f2/9512deeed23c0eca48d68fb2c8850a28f76692ea/node_modules/bcrypt: Command failed.
       Exit code: 1
       Command: sh
       Arguments: -c node-pre-gyp install --fallback-to-build
       Directory: /tmp/build_c86802dccae94b3fb074d3b88f3f63f2/9512deeed23c0eca48d68fb2c8850a28f76692ea/node_modules/bcrypt
       Output:
       module.js:472
       throw err;
       ^

       Error: Cannot find module 'abbrev'
       at Function.Module._resolveFilename (module.js:470:15)
       at Function.Module._load (module.js:418:25)
       at Module.require (module.js:498:17)
       at require (internal/module.js:20:19)
       at Object.<anonymous> (/tmp/build_c86802dccae94b3fb074d3b88f3f63f2/9512deeed23c0eca48d68fb2c8850a28f76692ea/node_modules/nopt/lib/nopt.js:10:14)
       at Module._compile (module.js:571:32)
       at Object.Module._extensions..js (module.js:580:10)
       at Module.load (module.js:488:32)
       at tryModuleLoad (module.js:447:12)
       at Function.Module._load (module.js:439:3)
       info Visit https://yarnpkg.com/en/docs/cli/install for documentation about this command.
-----> Build failed

       We're sorry this build is failing! You can troubleshoot common issues here:
       https://devcenter.heroku.com/articles/troubleshooting-node-deploys

       Some possible problems:

       - A module may be missing from 'dependencies' in package.json
       https://devcenter.heroku.com/articles/troubleshooting-node-deploys#ensure-you-aren-t-relying-on-untracked-dependencies

       - This module may be specified in 'devDependencies' instead of 'dependencies'
       https://devcenter.heroku.com/articles/nodejs-support#devdependencies

       Love,
       Heroku

 !     Push rejected, failed to compile Node.js app.
 !     Push failed

Establecer NODE_MODULES_CACHE=false tampoco ayudó.

Aquí está el árbol de dependencia:

├─┬ [email protected]
│ └─┬ [email protected]
│   └─┬ [email protected]
│     └─┬ [email protected]
│       └─┬ [email protected]
│         └── [email protected] 
├─┬ [email protected]
│ └─┬ @google-cloud/[email protected]
│   └─┬ @google-cloud/[email protected]
│     └─┬ [email protected]
│       └─┬ [email protected]
│         └─┬ [email protected]
│           └── [email protected] 
└─┬ [email protected]
  └── [email protected] 

Creo que el problema es la dependencia profunda a través de google-cloud . Ese es un módulo de producción, y tanto bable-cli como instanbul son solo para desarrolladores.

Además, cuando uso yarn why abbrev , no consigue recoger los google-cloud y babel-cli dependientes de los padres:

yarn why v0.18.1
[1/4] 🤔  Why do we have the module "abbrev"...?
[2/4] 🚚  Initialising dependency graph...
[3/4] 🔍  Finding dependency...
[4/4] 🚡  Calculating file sizes...
info Reasons this module exists
   - "istanbul" depends on it
   - "istanbul#nopt" depends on it

@jkrems , @SimenB ¿Debo plantear una nueva cuestión para eso o no?

istanbul#nopt también se ve mal, en la salida why .
Estoy de camino a trabajar ahora, lo probaré en una aplicación real

@SimenB gracias, avíseme si necesita más información, por ejemplo, mi lista completa de módulos package.json.

Editar: en realidad aquí está por si acaso, ya que me voy a dormir ahora;

"dependencies": {
    "bcrypt": "^1.0.1",
    "bluebird": "^3.4.6",
    "body-parser": "^1.15.2",
    "chalk": "^1.1.3",
    "compression": "^1.6.2",
    "cookie-parser": "^1.4.3",
    "cors": "^2.8.1",
    "express": "^4.14.0",
    "glob": "^7.1.1",
    "google-cloud": "^0.45.1",
    "handlebars": "^4.0.6",
    "html-pdf": "^2.1.0",
    "http-as-promised": "^1.1.0",
    "meanie-express-error-handling": "git+https://github.com/meanie/express-error-handling#2.0.0",
    "meanie-express-github-service": "^2.0.2",
    "meanie-express-jwt-service": "^1.0.2",
    "meanie-express-raven-service": "^1.0.1",
    "meanie-mail-composer": "^1.2.0",
    "meanie-mongoose-only-id": "^1.0.1",
    "meanie-mongoose-set-properties": "^1.0.1",
    "meanie-mongoose-to-json": "^1.1.0",
    "meanie-multer-mime-types-filter": "^1.0.1",
    "meanie-passport-refresh-strategy": "^1.1.2",
    "moment": "^2.17.1",
    "mongoose": "^4.7.3",
    "morgan": "^1.7.0",
    "multer": "^1.1.0",
    "passport": "^0.3.2",
    "passport-http-bearer": "^1.0.1",
    "passport-local": "^1.0.0",
    "phantomjs-prebuilt": "2.1.14",
    "sendgrid": "^4.7.1",
    "sendgrid-mailer": "^1.0.7",
    "socket.io": "^1.7.2",
    "yargs": "^6.5.0"
  },
  "devDependencies": {
    "babel-cli": "^6.16.0",
    "babel-preset-es2015": "^6.18.0",
    "chai": "^3.5.0",
    "chai-as-promised": "^6.0.0",
    "dirty-chai": "^1.2.2",
    "eslint": "^3.12.1",
    "express-simulate-latency": "0.0.2",
    "istanbul": "^1.0.0-alpha.2",
    "mocha": "^3.2.0",
    "mocha-clean": "^1.0.0",
    "nodemon": "^1.11.0",
    "sinon": "^1.17.6",
    "sinon-as-promised": "^4.0.0",
    "sinon-mongoose": "^1.3.0"
  }

Esto todavía falla para la aplicación en el trabajo. Parece que Yarn es incapaz de seguir caminos profundos. Aquí está npm ls entities después de yarn --prod

$ npm ls entities
[email protected] /Users/simbekkh/repos/frontpage
└─┬ @finn-no/[email protected]
  └─┬ [email protected]
    └─┬ [email protected]
      └─┬ [email protected]
        └─┬ [email protected]
          └─┬ [email protected]
            └── UNMET DEPENDENCY entities@~1.1.1

npm ERR! missing: entities@~1.1.1, required by [email protected]

Igual que @adamreisnz , yarn why no elige el árbol correcto.

$ yarn why entities
yarn why v0.18.1
[1/4] 🤔  Why do we have the module "entities"...?
[2/4] 🚚  Initialising dependency graph...
[3/4] 🔍  Finding dependency...
[4/4] 🚡  Calculating file sizes...
info Reasons this module exists
   - "cheerio" depends on it
   - "cheerio#htmlparser2" depends on it
info Disk size without dependencies: "108kB"
info Disk size with unique dependencies: "108kB"
info Disk size with transitive dependencies: "108kB"
info Amount of shared dependencies: 0
✨  Done in 0.40s.

istanbul # nopt también se ve mal, en la salida por qué.

Tienes razón, es probable que ese sea el núcleo de este problema. Parece pensar que nopt es parte del paquete istanbul , en lugar de google-cloud y / o babel-cli , y tal vez por eso no lo está instalando para producción. entornos, porque istanbul no es una dependencia de prod.

Hola a todos, lamento que estén teniendo este problema desde hace bastante tiempo.
Me asignaré este problema a mí mismo y ahora es de alta prioridad, intentaré solucionarlo durante las vacaciones.
La ayuda y las relaciones públicas con pruebas de rotura aisladas o una solución (idealmente) son muy bien recibidas.

Tenemos el mismo problema en prod env con lib bl que es una dependencia de las dependencias opcionales de gulp-imagemin 😕

[~/Workspaces/my-project 12:05:33] NODE_ENV=production yarn
yarn install v0.18.1
info No lockfile found.
[1/4] 🔍  Resolving packages...
warning algoliasearch > [email protected]: Just use Array.isArray directly
warning gulp-file > through2 > xtend > [email protected]:
warning raven > [email protected]: use uuid module instead
warning wiredep > bower-config > [email protected]: graceful-fs v3.0.0 and before will fail on node releases >= v7.0. Please update to graceful-fs@^4.0.0 as soon as possible. Use 'npm ls graceful-fs' to find it in the tree.
warning chromedriver > [email protected]: this package has been reintegrated into npm and is now out of date with respect to npm
warning mversion > [email protected]: Please update to minimatch 3.0.2 or higher to avoid a RegExp DoS issue
warning wiredep > glob > [email protected]: Please update to minimatch 3.0.2 or higher to avoid a RegExp DoS issue
warning webdriverio > request > [email protected]: use uuid module instead
warning gulp > vinyl-fs > glob-watcher > gaze > globule > [email protected]: Please update to minimatch 3.0.2 or higher to avoid a RegExp DoS issue
warning gulp > vinyl-fs > glob-watcher > gaze > globule > glob > [email protected]: graceful-fs v3.0.0 and before will fail on node releases >= v7.0. Please update to graceful-fs@^4.0.0 as soon as possible. Use 'npm ls graceful-fs' to find it in the tree.
warning sprity-lwip > lwip > decree > [email protected]: This package is discontinued. Use lodash@^4.0.0.
[2/4] 🚚  Fetching packages...
warning [email protected]: The engine "ender" appears to be invalid.
[3/4] 🔗  Linking dependencies...
[4/4] 📃  Building fresh packages...
[1/7] ⠂ fsevents: GET https://fsevents-binaries.s3-us-west-2.amazonaws.com/v1.0.15/fse-v1.0.15-node-v51-darwi
[2/7] ⠂ gifsicle
[3/7] ⠂ jpegtran-bin
[4/7] ⠂ optipng-bin
error /Users/fdubost/Workspaces/my-project/node_modules/gifsicle: Command failed.
Exit code: 1
Command: sh
Arguments: -c node lib/install.js
Directory: /Users/fdubost/Workspaces/my-project/node_modules/gifsicle
Output:
module.js:474
    throw err;
    ^

Error: Cannot find module 'bl'
    at Function.Module._resolveFilename (module.js:472:15)
    at Function.Module._load (module.js:420:25)
    at Module.require (module.js:500:17)
    at require (internal/module.js:20:19)
    at Object.<anonymous> (/Users/fdubost/Workspaces/my-project/node_modules/tar-stream/extract.js:2:10)
    at Module._compile (module.js:573:32)
    at Object.Module._extensions..js (module.js:582:10)
    at Module.load (module.js:490:32)
    at tryModuleLoad (module.js:449:12)
    at Function.Module._load (module.js:441:3)

Gracias por tu ayuda 😊

Funciona si agrego manualmente bl a nuestro package.json ...

¿Alguna noticia sobre esto?

Todavía no, estoy construyendo un verificador commonJS ad-hoc que verifica la estructura de node_modules independientemente de los algoritmos de resolución y elevación de Yarn https://github.com/yarnpkg/yarn/pull/2419.
Podría detectar todos los casos descritos en este error y protegernos de futuras regresiones.

@kittens está
El error no es trivial, por lo que cualquier información adicional es bienvenida

Muy bien, recopilando todos los repros ahora con el último baúl.
El ejemplo del primer comentario ya no se reproduce y yarn check --verify-tree pasa

Sí, esa reproducción se corrigió con 0.18.1.

2 ideas:

¿Hay algún registro con las resoluciones que están sucediendo que pueda compartir con ustedes?

Además, puedo darte el archivo de bloqueo que lo reproduce en el trabajo, pero no podrás instalarlo debido a departamentos privados. ¿Podrías perder el tiempo y saltarte la búsqueda de paquetes y simplemente jugar con el árbol?

@SimenB , entonces tiene otro ejemplo en el que la resolución está rota para - ¿instalación de producción?

Para ese caso puedes probar:

yarn install --production --verbose
yarn check --production --verify-tree

Con la última rama maestra.
Si no desea enviar registros públicamente, envíeme un mensaje a [email protected]

Sí, 0.18.1 todavía estaba roto, no he probado 0.19 (o maestro). Si aún se reproduce (¡espero que no!), Te enviaré los registros de forma privada.

Cerremos esta tarea porque se resolvió el problema del título.
Hay 2 abiertos que no he vuelto a revisar todavía: # 2263 y # 2141 siéntase libre de comentar allí o crear uno nuevo para su caso y enviarme una copia.

2todos: cuando comente que la instalación es incorrecta, incluya un package.json para que otros puedan reproducirlo.
Felicitaciones a @jkrems por dar un paso más y enviar un script de reproducción increíble: https://github.com/yarnpkg/yarn/issues/761#issuecomment -265823529

@bestander, ¿también ha vuelto a comprobar https://github.com/yarnpkg/yarn/issues/761#issuecomment -268130124?

@adamreisnz , ¿puedes compartir el package.json de nuevo, por favor?

https://github.com/yarnpkg/yarn/issues/761#issuecomment -268130124 es un problema diferente.

Ese falla por yarn install --production .

Este problema se trata de que yarn install --production finalice correctamente pero no esté haciendo lo correcto.

@bestander Lo he compartido en el comentario a continuación, https://github.com/yarnpkg/yarn/issues/761#issuecomment -268201708, salud

Todavía falla con el maestro (c98df16b) para mí ...

yarn check --verify-tree lanza, eso es prometedor. Sin embargo, muchos de ellos son departamentos de desarrollo.

yarn check v0.20.0-0
error "babel-preset-es2015" not installed
error "browserify-middleware" not installed
error "cheerio" not installed
error "codeceptjs" not installed
error "del-cli" not installed
error "eslint" not installed
error "eslint-config-finn" not installed
error "espower-loader" not installed
error "hashmark" not installed
error "interfake" not installed
error "nightmare" not installed
error "nightmare-upload" not installed
error "nock" not installed
error "nodemon" not installed
error "nyc" not installed
error "power-assert" not installed
error "sinon" not installed
error "supertest" not installed
error "uglifyify" not installed
error "@finn-no/express-base#nunjucks#chokidar#anymatch" not installed
error "@finn-no/express-base#unleash-client#request#json-stringify-safe" not installed
error "@finn-no/express-base#pretty-error#renderkid#css-select#domutils#dom-serializer#entities" not installed
error Found 22 errors.

Al ejecutar la aplicación, falla al perder cualquier coincidencia.

npm ls muestra otras deps que faltan, lo que tiene más sentido

npm ERR! extraneous: [email protected] /Users/simbekkh/repos/frontpage/node_modules/node-pre-gyp
npm ERR! missing: anymatch@^1.3.0, required by [email protected]
npm ERR! missing: entities@~1.1.1, required by [email protected]
npm ERR! missing: json-stringify-safe@~5.0.1, required by [email protected]

Y esta fue la observación / causa del problema: https://github.com/yarnpkg/yarn/issues/761#issuecomment -268331340

Tienes razón, es probable que ese sea el núcleo de este problema. Parece pensar que nopt es parte del paquete istanbul, en lugar de google-cloud y / o babel-cli, y tal vez por eso no lo está instalando para entornos de producción, porque istanbul no es una dependencia de prod.

Oh, lo siento, @SimenB

yarn check --prodution --verify-tree

Editaré mi comentario

Hacer yarn check --verify-tree --production da un buen resultado (está de acuerdo con npm ls ):

yarn check v0.20.0-0
error "@finn-no/express-base#nunjucks#chokidar#anymatch" not installed
error "@finn-no/express-base#unleash-client#request#json-stringify-safe" not installed
error "@finn-no/express-base#pretty-error#renderkid#css-select#domutils#dom-serializer#entities" not installed
error Found 3 errors.

@bestander Te enviaré un correo electrónico package.json, yarn.lock y el registro de instalación detallado 😄

@dashmug , ¿quieres que cree un nuevo ticket para ese problema? Sigue siendo un problema de instalación de dependencias incorrectas (aunque solo para producción), así que creo que está relacionado con este ticket.

@bestander Correo electrónico enviado.
Si bien @finn-no/express-base no está disponible públicamente, los otros 3 paquetes en la salida sí lo están, por lo que es de esperar que pueda reproducir únicamente con paquetes públicos.

¿Debería abrir una nueva edición?

@adamreisnz , ¿podría crear una nueva edición?
Puedo reproducirlo pero es un tema diferente al del título.

Es relacionado. Probablemente la misma causa. Solo un síntoma diferente. Lo pondría como un tema diferente ya que no es exactamente lo mismo que dice el título.

@SimenB , gracias, echaré un vistazo

Ok, chicos.

@bestander Hacer un paquete con solo esos 3 en la salida que falla lo hace reproducible en el maestro para mí con solo departamentos públicos. No es una reproducción mínima, pero aún así

{
  "name": "app",
  "version": "1.0.0",
  "dependencies": {
    "brakes": "^2.5.1",
    "compression": "^1.6.2",
    "envalid": "^2.4.0",
    "express": "^4.14.0",
    "object.entries": "^1.0.4",
    "prom-client": "^7.0.0",
    "response-time": "^2.3.2",
    "spaden": "^7.13.1",
    "yarn-issue-repro-package": "^1.0.0"
  },
  "devDependencies": {
    "babel-preset-es2015": "^6.18.0",
    "browserify": "^13.1.1",
    "browserify-middleware": "^7.1.0",
    "cheerio": "^0.22.0",
    "codeceptjs": "^0.4.13",
    "del-cli": "^0.2.1",
    "eslint": "^3.12.2",
    "eslint-config-finn": "^1.0.1",
    "espower-loader": "^1.0.1",
    "hashmark": "^4.1.0",
    "interfake": "^1.19.0",
    "mocha": "^3.2.0",
    "nightmare": "^2.9.0",
    "nightmare-upload": "^0.1.1",
    "nock": "^9.0.2",
    "nodemon": "^1.11.0",
    "nyc": "^10.0.0",
    "power-assert": "^1.4.1",
    "sinon": "^1.17.6",
    "supertest": "^2.0.1",
    "uglify-js": "^2.7.5",
    "uglifyify": "^3.0.4"
  }
}

package.json de yarn-issue-repro-package

{
  "name": "yarn-issue-repro-package",
  "version": "1.0.0",
  "main": "index.js",
  "license": "MIT",
  "dependencies": {
    "nunjucks": "^2.5.2",
    "pretty-error": "^2.0.2",
    "unleash-client": "^1.0.0-beta.7"
  }
}

Curiosamente, produce 4 errores en lugar de 3 ...

$ yarn check v0.20.0-0                                                                                                   │├─ [email protected]
error "yarn-issue-repro-package#nunjucks#chokidar#anymatch" not installed                                              │└─ [email protected]
error "yarn-issue-repro-package#unleash-client#request#json-stringify-safe" not installed                              │✨  Done in 2.65s.
error "yarn-issue-repro-package#nunjucks#yargs#string-width#code-point-at" not installed                               │ ~/repos/yarn-issue-repro-package  vim package.json
error "yarn-issue-repro-package#pretty-error#renderkid#css-select#domutils#dom-serializer#entities" not installed      │ ~/repos/yarn-issue-repro-package  npm publish
error Found 4 errors.

No estoy seguro de si es el mismo problema o no, pero aquí está el resultado (probado con 0.19.1)

Creo que he encontrado la causa raíz del problema de instalación.
El siguiente paquete.json puede reproducir el error al instalar un paquete:

{ "dependencies": {
    "bcrypt": "^1.0.1",
    "gamepad": "1.4.2"
  },
  "devDependencies": {
     "istanbul": "^1.0.0-alpha.2"
  }
}

Y luego los comandos

rm -rf node_modules yarn.lock
yarn install
rm -rf node_modules
yarn install --production
npm ls abbrev

En esta configuración, abbrev no está instalado.

abbrev es usado por istanbul y por nopt (como puede verse en yarn why abbrev ). nopt es usado por istanbul y node-pre-gyp (que es usado por bcrypt y gamepad ).

Al deducir abbrev en el paquete de elevación, el siguiente código se utiliza para determinar la nueva función isIgnored del registro de elevación:

          // switch to non ignored if earlier deduped version was ignored
          if (existing.isIgnored() && !info.isIgnored()) {
            existing.isIgnored = info.isIgnored;
          }

abbrev es uno de los primeros registros de izado que se procesan. En ese momento, el registro existente es istanbul#abbrev (ignorado porque istanbul se ignora), y el registro duplicado es istanbul#nopt#abbrev , que también se ignora en ese momento por la misma razón .

Debido a que ambos registros se ignoran en ese momento, la función de ignorar no se ajusta como se suponía, porque nopt no se ignorará en una deduplicación posterior debido a la dependencia de node-pre-gyp . El estado de ignorar de ambos registros puede cambiar en cualquier momento, por lo que la nueva función de ignorar debería mezclarlos.

Y de hecho, el problema de instalación desaparece cuando reemplazamos esas líneas con

          // switch to non ignored if earlier deduped version was ignored
          if (existing.isIgnored()) {
            if (info.isIgnored()) {
              // both are ignored now, but any one could become non ignored later on.
              let oldIsIgnored = existing.isIgnored;
              existing.isIgnored = () => oldIsIgnored() && info.isIgnored();
            } else {
              existing.isIgnored = info.isIgnored;
            }
          }

@blexrob , ¡gran descubrimiento!
¿Enviarías un PR?
Hay una prueba deshabilitada para "no debería perder dependencias al instalar con --production" en integration.js que debería corregirse ahora

@bestander , lo acabo de probar, y esta solución provoca un desbordamiento de pila en la prueba que mencionó, por lo que no se puede aplicar. Aparece el siguiente ciclo:

d#es5-ext -> es6-symbol#es5-ext -> es6-set#es5-ext -> es6-iterator#es5-ext -> es6-map#es5-ext -> es5-ext#es6-iterator -> es6-set#es6-iterator -> es6-weak-map#es6-iterator -> event-emitter#es5-ext -> d#es5-ext

Entonces, el enfoque de llamada recursiva ingenua está fuera ...

Sí, creo que necesita algunos ajustes, pero la idea parece correcta.

Tengo un problema con el módulo phantomjs-prebuilt (como dependencia de dependencia) con hilo 0.27.5-1.
Así que ahora hago ficticia yarn add phantomjs-prebuilt , antes de yarn install --production .

Lamento decir que esto todavía parece ser un problema en Yarn 1.3.2.
Mis compilaciones en Netlify fallan cuando utilizo Yarn 1.3.2, pero tengo éxito con Yarn 0.18.2.
Los errores de compilación con cannot find module 'are-we-there-yet' y solo con el indicador de producción.

@adamreisnz , este hilo es demasiado grande para rastrear todos los problemas.
¿Podrías crear uno nuevo con guión de reproducción?

@bestander hecho, gracias.

Para alguien que aún no puede hacerlo funcionar y no quiere instalar jq puede usar

$ python -c "import json; p = json.loads(open('package.json').read()); del p['devDependencies']; open('package.json', 'w').write(json.dumps(p, indent=2));"

estoy en hilo 1.17.3 y nodo v10.16.2 en lerna monorepo. todavía enfrenta el mismo problema.

Yo también puedo confirmarlo.
Tengo muchas dependencias, pero cuando uso yarn install --production , solo se instalan dos módulos.
Sin embargo, es notable que estoy en un monorepo de Lerna similar a @hannadrehman con espacios de trabajo de Yarn , lo que puede explicar el comportamiento extremo.

Versión de hilo: 1.22.0
Nodo: v12.16.1

npm install --production embargo,

@hannadrehman ¿el proyecto en cuestión es un paquete de tu monorepo?

Mismo problema que @ TAnas0

¿Fue útil esta página
0 / 5 - 0 calificaciones