Yarn: `yarn install --production` installiert keine korrekten Abhängigkeiten

Erstellt am 12. Okt. 2016  ·  115Kommentare  ·  Quelle: yarnpkg/yarn

Wenn yarn install --production , werden die erforderlichen Abhängigkeiten von forever nicht installiert. Dies scheint damit zu tun zu haben, dass nodemon in devDependencies .

Fehlerantwort:

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

Ich habe hier eine Testanwendung erstellt:
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

Hilfreichster Kommentar

Hallo allerseits, tut mir leid, dass Sie dieses Problem schon eine ganze Weile haben.
Ich werde dieses Problem mir selbst zuweisen und es hat jetzt eine hohe Priorität. Ich werde versuchen, es in den Ferien zu beheben.
Hilfe und PRs mit isolierten Bruchtests oder einem Fix (idealerweise) sind sehr willkommen.

Alle 115 Kommentare

@ Daniel15 Ich denke, das liegt daran, dass nodemon die neueste Version von minimatch hat.

Die Linker-Funktion nimmt derzeit sowohl deps als auch dev deps auf. Für die Argumentproduktion sollte dies verhindert werden.

Auch auf normalem Garn ohne Produktionsargument installieren. Im aktuellen Pfad wird nur die neueste Version installiert. Dies muss auch überprüft werden.

Ich habe ein ähnliches Problem, wenn ich yarn install --production ausführe und dann versuche, meinen Build mit webpack auszuführen (das Ausführen von yarn install funktioniert einwandfrei).

> 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)

und wenn ich mich richtig erinnere, zeigten frühere Versuche ähnliche Fehler mit einem anderen Paket (nicht nur graceful-fs )

Ich werde mir auch sehr ähnlich ... yarn install funktioniert einwandfrei. aber mit der --production Flagge bekomme ich folgendes:

> 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)

Kann ein ähnliches Problem reproduzieren mit:

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

Dadurch wird is-glob installiert, jedoch nicht die Abhängigkeit 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.

Es scheint den gulp#liftoff Abhängigkeitspfad beim Durchlaufen zu "vergessen".

EDIT: Kleineres Beispiel:

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

Außerdem wurde bestätigt, dass durch Entfernen von devDependencies vor dem Ausführen von yarn --prod der richtige Abhängigkeitsbaum installiert wird.

Mein Software-Team ist auf dieses Problem gestoßen, insbesondere mit dem Paket prr das eine Abhängigkeit von less und pouchdb . Viele andere Pakete fehlten ebenfalls im --production Build, aber prr war das erste, das einen Fehler in unserem Produkt verursachte. Dieses Problem war für uns ein Showstopper, da die Größe unseres Installationsprogramms erheblich zunehmen würde, wenn wir die Entwicklungspakete einbeziehen würden. Daher haben wir wieder npm verwendet.

FWIW: Ich kann das Problem umgehen, indem ich den Abschnitt devDependencies aus package.json lösche, bevor yarn in der Produktion ausgeführt wird.

Wie @gihrig sagte, kann das Ausführen von npm prune --production die devDependencies entfernen, was zur Umgehung dieses Problems beiträgt.

Wie @gihrig sagte, kann durch Ausführen von npm prune --production die devDependencies entfernt werden, um dieses Problem zu umgehen.

Der Hauptvorteil von Yarn gegenüber npm ist ein deterministisches node_modules -Dir, dh dasselbe gilt für dev, CI und die sofort einsatzbereite Produktion. Ergibt das Ausführen von npm prune --production dasselbe Verhalten?

Meine aktuelle Problemumgehung besteht darin, devDependencies in der Produktion zu installieren. Die Festplatte ist billig (insbesondere unter AWS) und eine deterministische Installation ist für mich viel wichtiger als der Speicherplatz. Meine "Problemumgehung" besteht also darin, einfach so zu handeln, als ob yarn --production momentan nicht existiert.

@tanx npm prune --production entferne einfach die devDependencies. Und in meinen Tests wurden immer die gleichen Module entfernt. Auf der anderen Seite ist ja Speicherplatz billig, also ist es vielleicht eine bessere Problemumgehung, wenn Sie so tun, als ob yarn --production nicht beendet wird :)

@tanx npm prune --production entferne einfach die devDependencies. Und in meinen Tests wurden immer die gleichen Module entfernt.

Dies ist genau die Mentalität "arbeitet an meiner Maschine", die im Yarn-Blogbeitrag beschrieben wird . Das Problem ist, dass Sie npm den Status von node_modules ändern lassen, ohne die Integritätsprüfung des Garns über die Datei yarn.lock durchzuführen.

Hoffentlich werden die besprochenen Problemumgehungen bald durch ein Garn-Update in Frage gestellt, um die Entwicklungs- und Produktionsabteilungen zu berücksichtigen. In der Zwischenzeit gibt es tatsächlich viel zu stöhnen mit dem Nachbearbeitungs-Hack "npm prune".

Das oben beschriebene yarn why Ding hat nichts damit zu tun. Es scheint nur ein Nebeneffekt davon zu sein, wie der Code why nach den Paketen sucht.

Es wurde versucht, einen guten Weg zu finden, ohne einen zusätzlichen Durchgang hinzuzufügen, um die Sichtbarkeit zu verbreiten, nachdem das Diagramm einmal durchlaufen wurde. Sie sind sich nicht sicher, ob es akzeptabel wäre, die Sichtbarkeit einfach in einen separaten Schritt aufzuteilen.

Es gibt auch einige interessante Randfälle, bei denen es nicht nur darum geht, die Sichtbarkeit richtig aufzulösen:

  • A ist eine optionale Abhängigkeit einer Produktionsabhängigkeit
  • B ist eine nicht optionale Abhängigkeit einer Entwicklungsabhängigkeit
  • C ist eine nicht optionale Abhängigkeit von beiden

In diesem Fall hängt das optionale Flag von C von dev vs. prod ab. In dev wäre es nicht optional, in prod wäre es optional. Allein das Erben des optionalen Flags von einem der Elternteile (oder immer das Erben des Flaggens von dem Elternteil) kann zu Verrücktheit führen.

Dies ist in 0.17.2 😢 immer noch nicht festgelegt

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

yarn

node index.js # works

yarn --prod

node index.js # explodes

/ cc @jkrems

Scheint mir auch in 0.17.2 (HearthSim / Joust # 169) nicht behoben zu sein.

Ich werde es wieder öffnen, da es mit den Anweisungen von @SimenB leicht reproduziert werden kann.

@wyze Das Problem könnte die Installation selbst sein und nicht das Beschneiden?

rm -rf node_modules/ && yarn && npm prune --production && node index.js schlägt mit demselben Fehler fehl.

rm -rf node_modules/ && npm i && npm prune --production && node index.js funktioniert jedoch.

Ich denke, Garn und npm sind jedoch nicht dazu gedacht, gleichzeitig verwendet zu werden. Es könnte also ein Zufall sein, dass sie denselben Fehler verursachen.

Ein Unterschied von node_modules nach npm i und yarn zeigt, dass Garn nicht "_requiredBy" ausgibt, wahrscheinlich, warum npm prune nach yarn install durcheinander kommt

Das gleiche Problem hier, wir haben die Produktion auf Docker getestet und festgestellt, dass mit yarn --production das Paket mime fehlte, selbst wenn das übergeordnete Modul send (von Express verwendet) installiert wurde .

Ich denke, dieses Problem sollte mit maximaler Priorität behandelt werden, da es zu unvorhersehbaren Builds führt.

Um dieses Problem zu umgehen, entferne ich einfach den Abschnitt devDependencies aus package.json in meinem Build-Skript.

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

Nach den Ratschlägen von @ dy-dx habe ich einen benutzerdefinierten Einstiegspunkt für Docker geschrieben, um dieses Problem während der Entwicklung zu beheben:

Zunächst sollten Sie jq in Ihrer Docker-Datei installieren und diese Zeile irgendwo hinzufügen:

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

Fügen Sie dieses Skript dann irgendwo hinzu und verwenden Sie es als Docker-Datei [ENTRYPOINT] oder Docker-Compose entrypoint entrypoint.sh

Verwenden Sie Ihren bevorzugten Befehl Dockerfile [CMD] oder Docker-compose command Eg npm start

Das gleiche Skript könnte in CI mit einigen Bearbeitungen verwendet werden, um das Bild zu erstellen

@SimenB Können Sie bitte das node_modules aus Ihrem entries-test -Paket entfernen und versuchen?

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

Extrahieren Sie den Teerball v1.0.1, es gibt einen Ordner node_modules mit define-properties und anderen Modulen. Und keiner von ihnen hat eine *.js -Datei.

@torifat Huh, wie hat das das überhaupt geschafft? Es sollte nicht möglich sein, ein node_modules einzuschließen, ohne bundledDependencies ...
Ich werde versuchen, ein sauberes zu pushen (ich habe die Projekte gelöscht, muss neu erstellen).

@torifat Es ist Garns Schuld, wie es aussieht.

$ 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

Die Verwendung von npm pack funktioniert wie erwartet (im selben Verzeichnis).

$ 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

Scheint so, als ob Yarn so sehr darauf aus ist, changelog , readme und package.json es sie sogar ab node_modules ...

Mit [email protected]

@torifat Jetzt veröffentlicht 1.0.2 (mit npm, um den gerade erwähnten Fehler zu vermeiden), immer noch das gleiche Problem

# 2047 für den Fehler bezüglich node_modules geöffnet, aber es ist ein roter Hering in dieser Ausgabe, da mein Repro immer noch gültig ist, wenn ein richtiger Tarball veröffentlicht wird.

(Entschuldigung für den Spam an abonnierte Personen, ich höre jetzt auf)

@SimenB Danke für deine Zeit. Ich habe den Fehler herausgefunden.

Dies scheint mit # 2104 zu tun zu haben, das ich gerade geöffnet habe. Die node_modules/.bin nach der Installation des 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

Behoben über # 2116.

Wurde # 2116 bereits zusammengeführt? Ich kann es in der Commit-Historie nicht sehen. Scheint verfrüht, eine Reihe von Problemen zu schließen, bevor ein Fix zumindest auf dem Master verfügbar ist, wenn nicht in einer getaggten Version. Es sieht auch so aus, als ob # 2116 alle drei Prüfungen nicht besteht. Vermisse ich etwas

Dies ist immer noch ein Problem in Version 0.18.0, einschließlich (# 2116).

Ja, ich kann bestätigen, dass dieses Problem in 0.18.0 noch vorhanden ist

Soweit ich weiß, hätte die # 2116 Tests für dieses Problem test.concurrent ('- Produktionsflag ignoriert Entwicklungsabhängigkeiten' ... oder ich irre mich?

Der Test überprüft nicht das korrekte Verhalten für transitive Abhängigkeiten:
In meinem Fall ist das Problem eine gemeinsam genutzte Abhängigkeit (lru-cache) zwischen einem Produkt (minimatch v2.0.0) und einer dev-Abhängigkeit (useragent v2.1.9). Diese gemeinsam genutzte Abhängigkeit ist nicht in --production installiert, obwohl die Produktabhängigkeit dies erfordert.

@beheh Ich sehe nicht, wo minimatch lru-cache . Vielleicht ist das der Grund, warum es nicht in der Produktion installiert ist.

Ich mache einige Tests mit 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.

Dies ist der Fall, der durch @SimenB veranschaulicht wird

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

@ SharpEdgeMarshall Danke fürs Testen. Ich werde es als Testfall hinzufügen.

@torifat könnte dies ebenfalls in Betracht ziehen

@ SharpEdgeMarshall Versuchte Folgendes und es funktioniert. Müssen das eigentliche Problem herausfinden.

screenshot 2016-12-06 21 18 44

@SimenB muss vor dem erneuten optionalDependencies geschehen. Welches hat ein anderes offenes Problem.

@torifat mein Repro passiert immer noch: https://github.com/yarnpkg/yarn/issues/761#issuecomment -260975012

BEARBEITEN: Ohne optionale Deps wird grep optional yarn.lock mit 1 beendet

Es schlägt jetzt bei Error: Cannot find module 'object-keys' fehl, anstatt define-properties verpassen.

$ 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.

Scheint, als würde es jetzt eine Ebene tiefer gehen, schlägt dann aber fehl

@SimenB Habe es gerade mit deinem versucht:

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

Und es funktioniert gut für mich. Können Sie ein yarn cache clean und es erneut versuchen?

Nein, schlägt fehl

@SimenB Können Sie Ihre yarn.lock -Datei freigeben ?

$ 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)

Für mich funktioniert das Beispiel von SimenB auch nach yarn cache clean nicht mit 0.18.0

# 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)

Sperrdatei:

# 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 Danke. Es scheint, mein Cache hatte ein Problem. Nachdem ich meinen Cache geleert habe, schlägt er fehl. Aber mit einem anderen Fehler. Gib mir etwas Zeit, um nachzuforschen.

Übrigens empfehle ich die Verwendung von https://github.com/Mottie/Octopatcher in diesem Thread

Sehr praktisch mit vielen Ausgabezeilen

image

Ich werde jetzt aufhören zu spammen

@SimenB Fehler in v0.18.0 , kann aber nicht in den letzten master reproduziert werden.

UPDATE: Seltsam! Es scheitert wieder 😕

@torifat Ich kann bestätigen, dass dies mit Master (v0.19.0) nicht funktioniert.
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)

Ich habe die gleichen Probleme (einige Pakete werden nicht mit dem Flag --production installiert) mit dem aktuellen stabilen 0.17.10 :

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

Aber wenn ich das aktuelle nächtliche Build Yarn 0.19.0-20161207.1241 versuche, wurden alle benötigten Pakete für meine App korrekt installiert:

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 können Sie den neuesten nächtlichen Build ausprobieren und bestätigen, dass das Problem weiterhin besteht.

Wird in meinen Docker-Containern verwendet: https://gist.github.com/nodkz/b843d65a3430a4f510e5f5eb0cc759d2

@nodkz 18 ist raus und stabil (glaube ich?), aber wie in dem Beitrag direkt über

Ich denke, es erfordert immer noch install yarn@rc :

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

Das ist neu, ich habe vor ein paar Tagen 0.18 durch einfaches Installieren bekommen. Wie auch immer, der Fehler ist in 0.18 immer noch reproduzierbar.

@nodkz Repro ist:

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

Ja, wir stoßen auch bei unseren Projekten auf ähnliche Probleme:

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')"

Schlägt sowohl mit 0.18 als auch mit dem neuesten Hauptzweig fehl.

Einverstanden. Immer noch in der Lage, mit den neuesten Repro.

Ich denke, mein Problem ist ähnlich oder dasselbe wie dieses. Die Erstellung von Heroku schlägt fehl, jedoch nur für die Produktionsumgebung. Das Caching ist deaktiviert.

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

Ich habe auch dieses Problem. Ich verwende derzeit noch yarn install für die Produktion, da yarn install --production die richtigen Abhängigkeiten nicht korrekt installiert.

Ich fürchte, ich kann das nicht tun, da es im Heroku-Buildpack, glaube ich, auf yarn install --production codiert ist (siehe https://github.com/heroku/heroku-buildpack-nodejs/issues/337).

@adamreisnz Entschuldigung, ich habe mich auf die ursprüngliche Ausgabe bezogen, nicht auf Ihre.

Um dieses Problem zu umgehen, schlage ich vor, dass Sie alle devDependencies auf dependencies bis dieses Problem behoben ist.

@ Dashmug Ah ok, kein Problem.

Wie auch immer, ich bevorzuge es, npm für Heroku zu verwenden, bis Yarn stabiler ist, anstatt mit hackigen Lösungen herumzuspielen. Ich habe yarn.lock in mein .gitignore eingefügt, damit es nicht in das Repo / Heroku hochgeladen wird. Auf diese Weise kann ich Yarn weiterhin lokal verwenden, dies hat jedoch keine Auswirkungen auf die Builds auf Heroku.

@adamreisnz Das macht deinen Zweck, yarn , zunichte , meinst du nicht auch?

@dashmug Zumindest nicht wirklich für uns. Ich verwende es nicht zum Sperren von Paketversionen. Wir haben sehr aktuelle Abhängigkeiten und keine Probleme mit "funktioniert auf meinem Computer". Mein Hauptgrund für die Umstellung auf Garn über npm war die Geschwindigkeit, die bei komplexen Apps mit vielen Abhängigkeiten von 5 Minuten für npm install auf 22 Sekunden mit Garn stieg.

Solange das Garn instabil ist, kann ich mit einem etwas langsameren Herstellungsprozess auf Heroku leben, solange ich das Garn lokal für die Entwicklung verwenden und schnell installieren kann :)

Garn wird als Ersatz für npm beworben. Einige der Probleme, auf die wir gestoßen sind und die noch ungelöst sind, wie dieses, hindern uns jedoch daran, sie als solche zu verwenden. Daher sehe ich es derzeit als zusätzliches Werkzeug, das für eine Sache nützlich ist, für eine andere aber noch nicht da. Ich habe keinen Zweifel, dass es mit der Zeit großartig funktionieren wird :)

Dies scheint für mich in 0.18.1 behoben zu sein.

Heroku verwendete 0.18.1 zu dem Zeitpunkt, als es fehlschlug, also noch nicht behoben afaik.

Dieses Problem wurde für mich am 0.18.1 behoben.

Mein früherer Repro ist mit 0.18.1 🎉 behoben

Ich werde es morgen mit einer echten App versuchen

0.18.1 behebt meine Probleme. Ich bin ein glücklicher Camper 🎉

Versuchte 0.18.1 mit einer nicht trivialen App, die zuvor fehlgeschlagen war und jetzt zu funktionieren scheint! 🎉

Ich denke, ich werde es bald noch einmal versuchen :)

Entschuldigung, funktioniert immer noch nicht mit 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

Das Setzen von NODE_MODULES_CACHE=false hat auch nicht geholfen.

Hier ist der Abhängigkeitsbaum:

├─┬ [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] 

Ich denke, das Problem ist die tiefe Abhängigkeit über google-cloud . Das ist ein Produktionsmodul, und sowohl bable-cli als auch instanbul sind nur Entwickler.

Wenn ich yarn why abbrev , werden die abhängigen babel-cli google-cloud und babel-cli Eltern nicht erfasst:

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 Soll ich dafür ein neues Problem

istanbul#nopt auch falsch aussieht, in dem why ausgegeben.
Ich bin jetzt auf meinem Weg zur Arbeit, werde dann in einer echten App testen

@SimenB danke, lassen Sie mich wissen, wenn Sie weitere Informationen benötigen, z. B. meine gesamte Liste der package.json-Module.

Edit: eigentlich hier ist es nur für den Fall, da ich jetzt schlafen gehe;

"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"
  }

Dies schlägt für die App bei der Arbeit immer noch fehl. Es scheint, als ob Yarn nicht in der Lage ist, tiefen Pfaden zu folgen. Hier ist npm ls entities nach 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]

Wie bei @adamreisnz nimmt yarn why nicht den richtigen Baum auf.

$ 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 sieht auch in der Warum-Ausgabe falsch aus.

Sie haben Recht, das scheint wahrscheinlich der Kern dieses Problems zu sein. Es scheint zu glauben, dass nopt Teil des Pakets istanbul , anstatt google-cloud und / oder babel-cli , und vielleicht wird es deshalb nicht für die Produktion installiert Umgebungen, weil istanbul keine Produktabhängigkeit ist.

Hallo allerseits, tut mir leid, dass Sie dieses Problem schon eine ganze Weile haben.
Ich werde dieses Problem mir selbst zuweisen und es hat jetzt eine hohe Priorität. Ich werde versuchen, es in den Ferien zu beheben.
Hilfe und PRs mit isolierten Bruchtests oder einem Fix (idealerweise) sind sehr willkommen.

Wir haben das gleiche Problem in prod env mit der lib bl , das eine Abhängigkeit von den optionalen Abhängigkeiten von 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)

Danke für deine Hilfe 😊

Es funktioniert, wenn ich bl manuell zu unserer package.json hinzufüge ...

Gibt es darüber irgendwelche Neuigkeiten?

Noch nicht, ich erstelle einen Ad-hoc-CommonJS-Checker, der die Struktur von node_modules unabhängig von den Hebe- und Auflösungsalgorithmen von Yarn überprüft . Https://github.com/yarnpkg/yarn/pull/2419.
Es wäre in der Lage, alle in diesem Fehler beschriebenen Fälle zu erfassen und uns vor zukünftigen Regressionen zu schützen.

@kittens schaut sich an, was hier passiert.
Der Fehler ist nicht trivial, daher sind zusätzliche Erkenntnisse willkommen

Also gut, sammle jetzt alle Repros mit dem neuesten Kofferraum.
Das Beispiel im ersten Kommentar wird nicht mehr reproduziert und yarn check --verify-tree

Ja, dieser Repro wurde mit 0.18.1 behoben.

2 Ideen:

Gibt es ein Protokoll mit den Auflösungen, das ich mit Ihnen teilen kann?

Außerdem kann ich Ihnen die Sperrdatei geben, die sie bei der Arbeit reproduziert, aber Sie können sie aufgrund privater Deps nicht installieren. Sie könnten in der Lage sein, herumzuspielen und das Abrufen von Paketen zu überspringen und einfach mit dem Baum herumzuspielen?

@SimenB , haben Sie also ein anderes Beispiel, bei dem die Auflösung für --production install gebrochen ist?

In diesem Fall können Sie versuchen:

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

Mit neuester Hauptniederlassung.
Wenn Sie keine Protokolle öffentlich senden möchten, senden Sie mir eine Nachricht an [email protected]

Ja, 0.18.1 war immer noch kaputt, habe 0.19 (oder Master) nicht getestet. Wenn es sich immer noch reproduziert (hoffe nicht!), Schicke ich Ihnen die Protokolle privat

Schließen wir diese Aufgabe, weil das Titelproblem gelöst wurde.
Es gibt zwei offene, die ich noch nicht überprüft habe: # 2263 und # 2141 Sie können dort einen Kommentar abgeben oder einen neuen für Ihren Fall erstellen und mich kontaktieren.

2all: Wenn Sie kommentieren, dass die Installation nicht korrekt ist, fügen Sie bitte eine package.json hinzu, damit andere dies reproduzieren können.
Ein großes Lob an https://github.com/yarnpkg/yarn/issues/761#issuecomment -265823529

@bestander haben Sie auch https://github.com/yarnpkg/yarn/issues/761#issuecomment -268130124 erneut überprüft?

@adamreisnz , können Sie die package.json bitte noch einmal teilen?

https://github.com/yarnpkg/yarn/issues/761#issuecomment -268130124 ist ein anderes Problem.

Dieser schlägt für yarn install --production fehl.

In diesem Problem geht es um yarn install --production das erfolgreich abgeschlossen wurde, aber nicht das Richtige tut.

@bestander Ich habe es in dem Kommentar unten geteilt, https://github.com/yarnpkg/yarn/issues/761#issuecomment -268201708, Prost

Scheitert immer noch mit Master (c98df16b) für mich ...

yarn check --verify-tree wirft, das ist vielversprechend. Viele davon sind jedoch Entwickler.

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.

Beim Ausführen der App schlägt ein fehlendes Match fehl.

npm ls zeigt andere fehlende Deps an, was sinnvoller ist

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]

Und dies war die Beobachtung / Ursache des Problems: https://github.com/yarnpkg/yarn/issues/761#issuecomment -268331340

Sie haben Recht, das scheint wahrscheinlich der Kern dieses Problems zu sein. Es scheint zu glauben, dass nopt Teil des Istanbul-Pakets ist, anstatt Google-Cloud und / oder Babel-Cli, und vielleicht wird es deshalb nicht für Produktionsumgebungen installiert, da Istanbul keine Produktabhängigkeit ist.

Oh, sorry, @SimenB

yarn check --prodution --verify-tree

Ich werde meinen Kommentar bearbeiten

Wenn Sie yarn check --verify-tree --production ausführen, erhalten Sie eine gute Ausgabe (dies stimmt mit npm ls überein):

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 Ich

@dashmug Soll ich ein neues Ticket für dieses Problem erstellen? Es ist immer noch ein Problem, dass falsche Abhängigkeiten installiert werden (wenn auch nur für die Produktion), daher denke ich, dass dies mit diesem Ticket zusammenhängt.

@bestander E-Mail gesendet.
Während @finn-no/express-base nicht öffentlich verfügbar ist, sind es die anderen 3 Pakete in der Ausgabe, sodass Sie hoffentlich nur mit öffentlichen Paketen reproduzieren können.

Soll ich eine neue Ausgabe eröffnen?

@adamreisnz , könnten Sie dann bitte eine neue Ausgabe erstellen?
Ich kann es reproduzieren, aber es ist eine andere Ausgabe als der Titel

Es ist verwandt. Wahrscheinlich die gleiche Ursache. Nur ein anderes Symptom. Ich würde das als ein anderes Thema bezeichnen, da es nicht genau das ist, was der Titel sagt.

@SimenB , danke, ich werde mal schauen

Ok, Leute.

@bestander Das fehlgeschlagenen Ausgaben in der Ausgabe macht es für mich mit nur öffentlichen Deps auf dem Master reproduzierbar. Es ist keine minimale Reproduktion, aber dennoch

{
  "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 von 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"
  }
}

Interessanterweise erzeugt es 4 Fehler anstelle von 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.

Ich bin nicht sicher, ob dies das gleiche Problem ist oder nicht, aber hier ist die Ausgabe (getestet mit 0.19.1)

Ich glaube, ich habe die Hauptursache für das Installationsproblem gefunden.
Der Fehler beim Installieren eines Pakets kann durch das folgende package.json reproduziert werden:

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

Und dann die Befehle

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

In dieser Konfiguration ist abbrev nicht installiert.

abbrev wird von istanbul und von nopt (wie aus yarn why abbrev ersichtlich). nopt wird von istanbul und node-pre-gyp (was von bcrypt und gamepad ).

Beim Dedupieren von abbrev im Paket-Hoister wird der folgende Code verwendet, um die neue isIgnored-Funktion des Hub-Datensatzes zu bestimmen:

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

abbrev ist einer der ersten zu verarbeitenden Hebedatensätze. In diesem Moment ist der vorhandene Datensatz istanbul#abbrev (ignoriert, da istanbul ignoriert wird), und der doppelte Datensatz ist istanbul#nopt#abbrev , der zu diesem Zeitpunkt aus demselben Grund ebenfalls ignoriert wird .

Da beide Datensätze zu diesem Zeitpunkt ignoriert werden, wird die Ignorierfunktion nicht wie vorgesehen angepasst, da nopt in einem späteren Dedup aufgrund der Abhängigkeit von node-pre-gyp nicht ignoriert wird. Der Ignorierstatus beider Datensätze kann sich jederzeit ändern, daher sollte die neue Ignorierfunktion sie mischen.

Und tatsächlich verschwindet das Installationsproblem, wenn wir diese Leitungen durch ersetzen

          // 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;
            }
          }

@lexrob , toller Fund!
Würden Sie eine PR senden?
In integration.js gibt es einen deaktivierten Test für "sollte bei der Installation mit --production keine Abhängigkeiten verlieren", der jetzt behoben werden sollte

@bestander , habe es gerade getestet, und dieses

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

Der naive Ansatz für rekursive Aufrufe ist also aus ...

Ja, ich glaube, es muss ein bisschen optimiert werden, aber die Idee scheint richtig zu sein

Ich habe ein solches Problem mit dem Modul phantomjs-prebuilt (als Abhängigkeit von der Abhängigkeit) mit Garn 0.27.5-1.
Also mache ich jetzt Dummy yarn add phantomjs-prebuilt vor yarn install --production .

Ich muss leider sagen, dass dies in Garn 1.3.2 immer noch ein Problem zu sein scheint.
Meine Builds auf Netlify schlagen fehl, wenn ich Yarn 1.3.2 verwende, aber mit Yarn 0.18.2 erfolgreich bin.
Die Build-Fehler mit einem cannot find module 'are-we-there-yet' und nur mit einem Produktionsflag.

@adamreisnz , dieser Thread ist zu groß, um alle Probleme zu verfolgen.
Könnten Sie ein neues mit Repro-Skript erstellen?

@bestander fertig, danke.

Für jemanden, der es immer noch nicht zum Laufen bringen kann und möchte, kann es verwenden

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

Ich bin auf Garn 1.17.3 und Knoten v10.16.2 in lerna Monorepo. immer noch vor dem gleichen Problem.

Ich kann es auch bestätigen.
Ich habe viele Abhängigkeiten, aber wenn ich yarn install --production , werden nur zwei Module installiert.
Bemerkenswerte aber ich bin auf ein Lerna monorepo ähnlich wie @hannadrehman mit Garn -

Garnversion: 1.22.0
Knoten: v12.16.1

npm install --production funktioniert jedoch perfekt.

@annadrehman ist das fragliche Projekt ein Paket Ihres Monorepo?

Gleiches Problem wie @ TAnas0

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen

Verwandte Themen

danez picture danez  ·  3Kommentare

chiedo picture chiedo  ·  3Kommentare

esphen picture esphen  ·  3Kommentare

MunifTanjim picture MunifTanjim  ·  3Kommentare

FLGMwt picture FLGMwt  ·  3Kommentare