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
@ 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:
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?
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
...
@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.
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.
@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
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
Dieser reproduziert nicht zu https://github.com/yarnpkg/yarn/issues/761#issuecomment -260975012 und https://github.com/yarnpkg/yarn/issues/761#issuecomment -265823529
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
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.