Yarn: `yarn install --production` tidak menginstal dependensi yang benar

Dibuat pada 12 Okt 2016  ·  115Komentar  ·  Sumber: yarnpkg/yarn

Saat menjalankan yarn install --production itu tidak menginstal dependensi yang diperlukan dari forever . Ini tampaknya terkait dengan memiliki nodemon di devDependencies .

Tanggapan kesalahan:

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

Saya telah membuat aplikasi tes di sini:
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

Komentar yang paling membantu

Hai semuanya, maaf Anda mengalami masalah ini cukup lama sekarang.
Saya akan menetapkan masalah ini untuk diri saya sendiri dan sekarang menjadi prioritas tinggi, saya akan mencoba memperbaikinya selama liburan.
Bantuan dan PR dengan tes pemecahan yang terisolasi atau perbaikan (idealnya) sangat disambut baik.

Semua 115 komentar

@ Daniel15 Saya rasa ini karena nodemon memiliki minimatch versi terbaru.

Fungsi linker saat ini mengambil deps dan dev deps ke dalamnya. Untuk produksi argumen, ini harus dicegah.

Bahkan pada pemasangan benang normal tanpa argumen produksi. Hanya versi terbaru yang diinstal di jalur yang sebenarnya. Ini harus diperiksa juga.

Saya mendapatkan masalah serupa saat menjalankan yarn install --production dan kemudian mencoba menjalankan bangunan saya menggunakan webpack (menjalankan yarn install berfungsi dengan baik).

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

dan jika saya ingat dengan benar, upaya sebelumnya menunjukkan kesalahan yang serupa dengan paket lain (tidak hanya graceful-fs )

Saya mendapatkan sangat mirip juga ... yarn install berfungsi dengan baik. tetapi dengan bendera --production saya mendapatkan ini:

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

Dapat mereproduksi masalah serupa dengan:

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

Ini akan menginstal is-glob tetapi tidak ketergantungannya 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.

Tampaknya "melupakan" jalur ketergantungan gulp#liftoff saat melakukan traverse ..?

EDIT: Contoh yang lebih kecil:

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

Juga dipastikan bahwa menghapus devDependencies sebelum menjalankan yarn --prod menginstal pohon ketergantungan yang benar.

Tim perangkat lunak saya mengalami masalah ini, khususnya dengan paket prr yang merupakan ketergantungan dari less dan pouchdb . Banyak paket lain yang juga hilang dari --production build tetapi prr adalah yang pertama menyebabkan kegagalan pada produk kami. Masalah ini telah menjadi penghalang bagi kami karena ukuran pemasang kami akan meningkat secara signifikan jika kami menyertakan paket dev, jadi kami telah kembali menggunakan npm.

FWIW: Saya dapat mengatasi masalah ini dengan menghapus devDependencies bagian dari package.json sebelum menjalankan yarn dalam produksi.

seperti yang dikatakan @gihrig menjalankan npm prune --production dapat menghapus devDependencies yang membantu mengatasi masalah ini.

seperti yang dikatakan @gihrig , menjalankan npm prune --production dapat menghapus devDependencies yang membantu mengatasi masalah ini.

Keuntungan utama benang atas npm adalah deterministik node_modules dir yaitu sama dalam dev, CI, dan produksi di luar kotak. Apakah menjalankan npm prune --production menghasilkan perilaku yang sama?

Solusi saya saat ini adalah menginstal devDependencies dalam produksi juga. Disk murah (terutama di AWS) dan penginstalan deterministik jauh lebih penting bagi saya daripada ruang disk. Jadi "solusi" saya adalah bertindak seperti yarn --production tidak ada sekarang.

@tanx npm prune --production cukup hapus devDependencies. Dan dalam pengujian saya selalu modul yang sama telah dihapus. Di sisi lain, ya, ruang disk itu murah, jadi mungkin bertindak seolah-olah yarn --production tidak keluar adalah solusi yang lebih baik :)

@tanx npm prune --production cukup hapus devDependencies. Dan dalam pengujian saya selalu modul yang sama telah dihapus.

Inilah tepatnya mentalitas "bekerja di mesin saya" yang dijelaskan dalam entri blog Yarn . Masalahnya adalah Anda membiarkan npm mengubah status node_modules tanpa pemeriksaan integritas benang melalui file yarn.lock .

Mudah-mudahan solusi yang dibahas akan segera diperdebatkan oleh pembaruan benang untuk menghormati departemen dev vs produksi. Sementara itu, memang ada banyak yang perlu dikeluhkan dengan hack pasca-pemrosesan "npm prune".

yarn why yang dijelaskan di atas tidak terkait afaict. Tampaknya hanya efek samping dari bagaimana kode why mencari paket.

Mencoba menemukan cara yang bagus untuk melakukan ini tanpa menambahkan pass tambahan untuk menyebarkan visibilitas setelah grafik dijalankan sekali. Tidak yakin apakah dapat diterima dengan hanya membagi visibilitas menjadi langkah terpisah ..?

Ada beberapa kasus tepi yang menarik juga, ini bukan hanya tentang menyelesaikan visibilitas dengan benar:

  • A adalah ketergantungan opsional dari ketergantungan produksi
  • B adalah dependensi non-opsional dari dependensi dev
  • C adalah ketergantungan non-opsional dari keduanya

Dalam hal ini, flag opsional C bergantung pada dev vs. prod. Dalam dev itu akan menjadi non-opsional, dalam prod itu akan menjadi opsional. Hanya mewarisi flag opsional dari salah satu orang tua (atau selalu mewarisinya dari orang tua prod) dapat menyebabkan keanehan.

Ini masih belum diperbaiki di 0.17.2 😢

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

yarn

node index.js # works

yarn --prod

node index.js # explodes

/ cc @jkrems

Tidak terlihat tetap bagi saya baik di 0.17.2 (HearthSim / Joust # 169).

Saya akan membukanya kembali karena dapat dengan mudah direproduksi dengan instruksi @SimenB .

@wyze Masalahnya mungkin instalasinya sendiri, dan bukan pemangkasannya?

rm -rf node_modules/ && yarn && npm prune --production && node index.js gagal dengan kesalahan yang sama.

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

Saya kira benang dan npm tidak dimaksudkan untuk digunakan pada saat yang bersamaan, jadi mungkin kebetulan itu menghasilkan kesalahan yang sama.

Selisih node_modules setelah npm i dan yarn menunjukkan bahwa benang tidak menghasilkan "_requiredBy" , mungkin mengapa npm prune kacau setelah yarn install . Info itu tersedia di lockfile, jadi seharusnya tidak menjadi masalah, bukan?

Masalah yang sama di sini, kami menguji gedung produksi di buruh pelabuhan dan menemukan bahwa dengan yarn --production paket mime hilang bahkan jika modul induk send (digunakan oleh express) dipasang .

Saya pikir masalah ini harus ditangani dengan prioritas maksimum karena menyebabkan build yang tidak dapat diprediksi.

Sebagai solusinya, saya hanya menghapus bagian devDependencies dari package.json di skrip build saya.

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

Mengikuti saran @ dy-dx, saya telah menulis titik masuk khusus untuk Docker agar monkeypatch masalah ini selama pengembangan:

Pertama-tama Anda harus menginstal jq di Dockerfile Anda dengan menambahkan baris ini di suatu tempat:

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

Kemudian tambahkan skrip ini di suatu tempat dan gunakan sebagai Dockerfile [ENTRYPOINT] atau docker-compose entrypoint entrypoint.sh

Gunakan perintah pilihan Anda untuk Dockerfile [CMD] atau docker-compose command Misalnya npm start

Skrip yang sama dapat digunakan di CI dengan beberapa edit untuk membangun gambar

@SimenB Bisakah Anda menghapus node_modules dari paket entries-test dan mencobanya?

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

Ekstrak bola tar v1.0.1, ada folder node_modules dengan define-properties dan modul lainnya. Dan, tidak satupun dari mereka memiliki file *.js .

@torifat Huh, bagaimana bisa sampai masuk? Seharusnya tidak mungkin menyertakan node_modules tanpa menggunakan bundledDependencies ...
Akan mencoba untuk mendorong yang bersih (saya telah menghapus proyek, harus membuat ulang).

@torifat Sepertinya kesalahan benang.

$ 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

Menggunakan npm pack berfungsi seperti yang diharapkan (di direktori yang sama).

$ 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

Sepertinya Yarn sangat ingin memasukkan changelog , readme dan package.json bahkan termasuk mereka dari node_modules ...

Menggunakan [email protected]

@torifat Mempublikasikan 1.0.2 sekarang (menggunakan npm untuk menghindari bug yang baru saja disebutkan), masih masalah yang sama

Dibuka # 2047 untuk bug terkait node_modules, tetapi ini adalah masalah besar dalam masalah ini, karena repro saya masih valid dengan tarball yang tepat diterbitkan.

(maaf tentang spam ke orang yang berlangganan, saya akan berhenti sekarang)

@SimenB Terima kasih atas waktu Anda. Saya sudah menemukan bugnya.

Ini tampaknya terkait dengan # 2104, yang baru saja saya buka. node_modules/.bin setelah penginstalan 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

Diperbaiki melalui # 2116.

Apakah # 2116 sudah digabungkan? Saya tidak bisa melihatnya dalam riwayat komit. Tampaknya terlalu dini untuk menutup banyak masalah sebelum perbaikan tersedia setidaknya di master jika tidak dalam rilis yang diberi tag. Juga, sepertinya # 2116 gagal dalam ketiga pemeriksaan. Apakah saya melewatkan sesuatu?

Ini masih menjadi masalah di v0.18.0, yang mencakup (# 2116).

ya, saya dapat mengonfirmasi bahwa masalah ini masih ada di 0.18.0

Dari apa yang saya lihat, # 2116 seharusnya telah memperkenalkan pengujian untuk masalah ini ( test.concurrent ('- flag produksi mengabaikan ketergantungan dev' ... atau saya salah?

Pengujian tidak memverifikasi perilaku yang benar untuk dependensi transitif:
Dalam kasus saya, masalahnya adalah ketergantungan bersama (lru-cache) antara prod (minimatch v2.0.0) dan ketergantungan dev (useragent v2.1.9). Ketergantungan bersama itu tidak dipasang di --production , meskipun ketergantungan prod membutuhkannya.

@beheh saya tidak melihat adalah minimatch menggunakan lru-cache , mungkin itu sebabnya tidak dipasang dalam produksi?

Saya melakukan beberapa pengujian dengan 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.

ini adalah kasus yang diilustrasikan oleh @SimenB

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

@SharpEdgege Terima kasih untuk pengujian. Saya akan menambahkannya sebagai kasus uji.

@torifat mungkin mempertimbangkan untuk

@SharpEdgeMarshall Mencoba yang berikut ini dan berhasil. Perlu mencari tahu masalah sebenarnya.

screenshot 2016-12-06 21 18 44

@SimenB perlu memverifikasi sebelum membuka kembali. Ini mungkin terjadi karena optionalDependencies juga. Yang memiliki masalah terbuka lainnya.

@torifat repro saya masih terjadi: https://github.com/yarnpkg/yarn/issues/761#issuecomment -260975012

EDIT: Yang tidak memiliki deps opsional, grep optional yarn.lock keluar dengan 1

Sekarang gagal pada Error: Cannot find module 'object-keys' bukannya kehilangan define-properties .

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

Sepertinya sekarang menangani satu tingkat lebih dalam, tetapi kemudian gagal

@SimenB Baru saja mencoba dengan:

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

Dan, itu bekerja dengan baik untuk saya. Dapatkah Anda melakukan yarn cache clean dan mencoba lagi?

Tidak, gagal

@SimenB Dapatkah Anda membagikan file yarn.lock ?

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

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

Bagi saya, contoh SimenB tidak berfungsi dengan 0.18.0 bahkan setelah yarn cache clean

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Lockfile:

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

@Simen Terima kasih. Sepertinya, cache saya bermasalah. Setelah membersihkan cache saya sekarang gagal. Tapi, dengan error yang berbeda. Beri aku waktu untuk menyelidiki.

Btw, saya sarankan menggunakan https://github.com/Mottie/Octopatcher di utas ini

Sangat praktis dengan banyak jalur keluaran

image

Saya akan berhenti mengirim spam sekarang

@SimenB Gagal v0.18.0 tetapi tidak dapat mereproduksi master .

UPDATE: Aneh! Itu gagal lagi 😕

@torifat Saya dapat mengonfirmasi bahwa tidak berfungsi dengan master (v0.19.0)
rm -rf node_modules && rm yarn.lock && ../yarn/bin/yarn cache clean && ../yarn/bin/yarn && node index.js && rm -rf node_modules && rm yarn.lock && ../yarn/bin/yarn cache clean && ../yarn/bin/yarn --prod && node index.js

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

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

Saya memiliki masalah yang sama (beberapa paket tidak diinstal dengan --production flag) dengan stabil saat ini 0.17.10 :

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

Tetapi ketika saya mencoba nightly build Yarn 0.19.0-20161207.1241 semua paket yang dibutuhkan telah diinstal dengan benar untuk aplikasi saya:

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 dapatkah Anda mencoba pembuatan nightly terbaru dan memastikan bahwa masalah tetap ada.

Digunakan dalam wadah buruh pelabuhan saya: https://gist.github.com/nodkz/b843d65a3430a4f510e5f5eb0cc759d2

@nodkz 18 sudah keluar dan stabil (menurut saya?), tetapi seperti yang dapat dilihat di pos langsung di atas milik Anda, master (setidaknya 2 hari yang lalu) masih memiliki bug

Saya pikir itu masih membutuhkan install yarn@rc :

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

Itu baru, saya mendapat 0,18 beberapa hari yang lalu dengan hanya menginstal. Bagaimanapun, bug masih dapat direproduksi di 0.18.

@nodkz Repro adalah:

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

Ya, mengalami masalah serupa dengan proyek kami juga:

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

Gagal dengan 0.18 dan cabang master terbaru.

Sepakat. Masih bisa repro dengan yang terbaru.

Saya pikir masalah saya mirip atau sama dengan yang ini. Build gagal di Heroku, tetapi hanya untuk lingkungan produksi. Caching dinonaktifkan.

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

Saya juga memiliki masalah ini juga. Saya masih menggunakan yarn install untuk produksi sampai saat ini karena yarn install --production tidak menginstal dependensi yang benar dengan benar.

Saya khawatir saya tidak bisa melakukan itu, karena hardcoded menjadi yarn install --production di Heroku buildpack menurut saya (ref https://github.com/heroku/heroku-buildpack-nodejs/issues/337)

@adamreisnz Maaf, yang saya maksud adalah masalah asli, bukan milik Anda.

Untuk solusi dari masalah Anda, saya sarankan Anda meletakkan semua devDependencies menjadi dependencies untuk saat ini hingga masalah ini diperbaiki.

@dashmug Ah ok, tidak masalah.

Bagaimanapun, saya lebih suka menggunakan npm di Heroku untuk saat ini sampai Yarn lebih stabil, daripada mengotak-atik solusi hacky. Saya telah meletakkan yarn.lock di .gitignore agar tidak dapat diunggah ke repo / heroku. Dengan cara ini, saya masih bisa menggunakan Yarn secara lokal, tetapi itu tidak akan memengaruhi build di Heroku.

@adamreisnz Itu mengalahkan tujuan Anda untuk menggunakan yarn , bukan begitu?

@dashmug Tidak juga, setidaknya, tidak untuk kami. Saya tidak menggunakannya untuk mengunci versi paket di tempatnya. Kami memiliki dependensi yang sangat mutakhir dan tidak ada masalah seputar "bekerja pada mesin saya". Alasan utama saya untuk pindah ke thread di atas npm adalah untuk kecepatannya, yang untuk aplikasi kompleks dengan banyak dependensi yang saya lihat mulai dari 5 menit dengan npm install menjadi 22 detik dengan benang.

Selama benang tidak stabil, saya dapat hidup dengan proses pembuatan yang sedikit lebih lambat di Heroku, selama saya dapat menggunakan benang secara lokal untuk pengembangan dan memiliki pemasangan yang cepat :)

Benang diiklankan sebagai pengganti npm yang cukup banyak. Namun, beberapa masalah yang kami temui dan yang masih belum terselesaikan, seperti ini, menghalangi kami untuk menggunakannya. Oleh karena itu saya melihatnya sebagai alat tambahan saat ini, yang berguna untuk satu hal, tetapi belum ada untuk yang lain. Saya tidak ragu pada waktunya ini akan bekerja dengan baik :)

Ini tampaknya diperbaiki untuk saya di 0.18.1.

Heroku menggunakan 0.18.1 pada saat gagal, jadi belum diperbaiki afaik.

Masalah ini telah diperbaiki untuk saya pada 0.18.1.

Repro saya sebelumnya diperbaiki dengan 0.18.1 🎉

Saya akan mencoba besok dengan aplikasi nyata

0.18.1 memperbaiki masalah saya. Saya senang berkemah 🎉

Mencoba 0.18.1 dengan aplikasi non-sepele yang sebelumnya gagal dan tampaknya berfungsi sekarang! 🎉

Saya rasa saya akan segera mencobanya lagi :)

Maaf, masih belum berfungsi dengan 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

Menyetel NODE_MODULES_CACHE=false juga tidak membantu.

Berikut adalah pohon ketergantungan:

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

Saya pikir masalahnya adalah ketergantungan yang mendalam melalui google-cloud . Itu adalah modul produksi, dan bable-cli dan instanbul adalah dev saja.

Selain itu, ketika saya menggunakan yarn why abbrev , gagal mengambil tanggungan induk google-cloud dan babel-cli :

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 Haruskah saya mengangkat masalah baru untuk itu atau tidak?

istanbul#nopt juga terlihat salah, pada keluaran why .
Saya sedang dalam perjalanan ke kantor sekarang, akan menguji dalam aplikasi nyata

@SimenB terima kasih, beri tahu saya jika Anda memerlukan informasi lebih lanjut, mis. Seluruh daftar modul package.json saya.

Sunting: sebenarnya di sini untuk berjaga-jaga, karena saya akan tidur sekarang;

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

Ini masih gagal untuk aplikasi di tempat kerja. Sepertinya Yarn tidak bisa mengikuti jalan yang dalam. Ini adalah npm ls entities setelah 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]

Sama seperti @adamreisnz , yarn why tidak mengambil pohon yang benar.

$ 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 juga terlihat salah, dalam output why.

Anda benar, sepertinya itulah inti dari masalah ini. Tampaknya berpikir bahwa nopt adalah bagian dari paket istanbul , bukan google-cloud dan / atau babel-cli , dan mungkin itu sebabnya ia tidak menginstalnya untuk produksi lingkungan, karena istanbul bukan ketergantungan prod.

Hai semuanya, maaf Anda mengalami masalah ini cukup lama sekarang.
Saya akan menetapkan masalah ini untuk diri saya sendiri dan sekarang menjadi prioritas tinggi, saya akan mencoba memperbaikinya selama liburan.
Bantuan dan PR dengan tes pemecahan yang terisolasi atau perbaikan (idealnya) sangat disambut baik.

Kami memiliki masalah yang sama di prod env dengan lib bl yang merupakan ketergantungan opsional 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)

Terima kasih atas bantuan Anda 😊

Ini berfungsi jika saya menambahkan bl secara manual ke package.json ...

Ada berita tentang ini?

Belum, saya sedang membuat pemeriksa ad-hoc commonJS yang memverifikasi struktur node_modules terlepas dari algoritme pengangkat dan resolusi Yarn https://github.com/yarnpkg/yarn/pull/2419.
Itu akan dapat menangkap semua kasus yang dijelaskan dalam bug ini dan melindungi kami dari regresi di masa mendatang.

@kittens sedang melihat apa yang terjadi di sini.
Bug ini tidak sepele, jadi kami menerima informasi tambahan apa pun

Baiklah, kumpulkan semua repro sekarang dengan bagasi terbaru.
Contoh di komentar pertama tidak mereproduksi lagi dan yarn check --verify-tree lolos

Ya, repro itu telah diperbaiki dengan 0.18.1.

2 ide:

Apakah ada log dengan resolusi yang terjadi yang dapat saya bagikan dengan Anda?

Selain itu, saya dapat memberikan lockfile yang mereproduksinya di tempat kerja, tetapi Anda tidak dapat menginstalnya karena deps pribadi. Anda mungkin bisa mengotak-atik dan melewati pengambilan paket, dan hanya mengotak-atik pohon?

@SimenB , jadi Anda memiliki contoh lain di mana resolusinya rusak untuk --production install?

Untuk itu, Anda dapat mencoba:

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

Dengan cabang master terbaru.
Jika Anda tidak ingin mengirim log secara publik, kirimi saya pesan di [email protected]

Ya, 0.18.1 masih rusak, belum diuji 0.19 (atau master). Jika masih mereproduksi (harap tidak!), Saya akan mengirimkan log secara pribadi

Mari kita tutup tugas ini karena masalah judul telah terpecahkan.
Ada 2 yang terbuka yang belum saya periksa ulang: # 2263 dan # 2141 jangan ragu untuk berkomentar di sana atau buat yang baru untuk kasus Anda dan cc saya.

2all: ketika Anda berkomentar bahwa instalasi tidak benar, harap sertakan package.json sehingga orang lain dapat mereproduksinya.
Kudos to @jkrems karena membuat langkah lebih jauh dan mengirimkan skrip repro yang luar biasa: https://github.com/yarnpkg/yarn/issues/761#issuecomment -265823529

@bestander sudahkah Anda memeriksa ulang https://github.com/yarnpkg/yarn/issues/761#issuecomment -268130124?

@adamreisnz , bisakah Anda membagikan package.json lagi?

https://github.com/yarnpkg/yarn/issues/761#issuecomment -268130124 adalah masalah yang berbeda.

Yang itu gagal untuk yarn install --production .

Masalah ini tentang yarn install --production selesai dengan sukses tetapi tidak melakukan hal yang benar.

@bestander saya sudah membagikannya di komentar di bawah itu, https://github.com/yarnpkg/yarn/issues/761#issuecomment -268201708, cheers

Masih gagal dengan master (c98df16b) untuk saya ...

yarn check --verify-tree lemparan, itu menjanjikan. Banyak dari mereka adalah deps dev.

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.

Menjalankan aplikasi, gagal jika ada kecocokan yang hilang.

npm ls menunjukkan deps lain yang hilang, yang lebih masuk akal

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]

Dan ini adalah observasi / penyebab masalah: https://github.com/yarnpkg/yarn/issues/761#issuecomment -268331340

Anda benar, sepertinya itulah inti dari masalah ini. Sepertinya nopt adalah bagian dari paket istanbul, bukan google-cloud dan / atau babel-cli, dan mungkin itu sebabnya tidak menginstalnya untuk lingkungan produksi, karena istanbul bukanlah ketergantungan prod.

Oh, maaf, @SimenB

yarn check --prodution --verify-tree

Saya akan mengedit komentar saya

Melakukan yarn check --verify-tree --production memberikan hasil yang baik (setuju dengan npm ls ):

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

@bestander Saya akan mengirimkan email kepada Anda package.json, yarn.lock, dan log pemasangan verbose 😄

@dashmug apakah Anda ingin saya membuat tiket baru untuk masalah itu? Ini masih masalah dependensi yang salah yang diinstal (meskipun hanya untuk produksi), jadi saya rasa ini terkait dengan tiket ini.

@bestander Email terkirim.
Meskipun @finn-no/express-base tidak tersedia untuk umum, 3 paket lainnya dalam output tersedia, jadi mudah-mudahan Anda dapat mereproduksi hanya dengan paket publik.

Haruskah saya membuka terbitan baru?

@adamreisnz , bisakah Anda membuat terbitan baru?
Saya dapat mereproduksinya tetapi ini adalah masalah yang berbeda dari judul satu

Itu terkait. Mungkin penyebabnya sama. Hanya gejala yang berbeda. Saya akan menempatkan itu sebagai masalah yang berbeda karena tidak persis sama dengan judulnya.

@SimenB , terima kasih, saya akan melihatnya

Ok akan dilakukan teman-teman.

@bestander Membuat paket dengan hanya 3 di output yang gagal membuatnya dapat direproduksi di master untuk saya hanya dengan deps publik. Ini bukan reproduksi minimal, tapi tetap saja

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

Menariknya, ini menghasilkan 4 kesalahan, bukan 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.

Saya tidak yakin apakah ini masalah yang sama atau tidak, tetapi ini adalah outputnya (diuji dengan 0.19.1)

Saya rasa saya telah menemukan akar penyebab masalah instalasi.
Kegagalan untuk menginstal paket dapat direproduksi oleh package.json berikut ini:

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

Dan kemudian perintahnya

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

Dalam konfigurasi ini, abbrev tidak diinstal.

abbrev digunakan oleh istanbul dan oleh nopt (seperti dapat dilihat dari yarn why abbrev ). nopt digunakan oleh istanbul dan node-pre-gyp (yang digunakan oleh bcrypt dan gamepad ).

Ketika mendeduping abbrev dalam paket hoister, kode berikut digunakan untuk menentukan fungsi isIgnored baru dari catatan hoisting:

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

abbrev adalah salah satu catatan pengangkatan pertama yang akan diproses. Pada saat itu, rekaman yang ada adalah istanbul#abbrev (diabaikan karena istanbul diabaikan), dan rekaman duplikatnya adalah istanbul#nopt#abbrev , yang juga diabaikan pada saat itu karena alasan yang sama .

Karena kedua catatan diabaikan pada saat itu, fungsi ignore tidak disesuaikan sebagaimana mestinya - karena nopt akan menjadi non-diabaikan dalam dedup berikutnya karena ketergantungan oleh node-pre-gyp . Status pengabaian kedua rekaman bisa berubah kapan saja, jadi fungsi abaikan yang baru harus mencampurnya.

Dan memang, masalah penginstalan hilang saat kami mengganti saluran tersebut dengan

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

@blexrob ,
Apakah Anda akan mengirim PR?
Ada pengujian nonaktif untuk "tidak boleh kehilangan dependensi saat menginstal dengan --production" di integration.js yang harus diperbaiki sekarang

@bestander , baru saja mengujinya, dan perbaikan ini menyebabkan tumpukan melimpah dalam pengujian yang Anda sebutkan, sehingga tidak dapat diterapkan. Siklus berikut muncul:

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

Jadi, pendekatan panggilan rekursif naif keluar ...

Ya, saya yakin perlu sedikit penyesuaian tetapi idenya tampaknya benar

Saya punya masalah dengan modul phantomjs-prebuilt (karena ketergantungan ketergantungan) dengan benang 0.27.5-1.
Jadi sekarang saya membuat dummy yarn add phantomjs-prebuilt , sebelum yarn install --production .

Saya menyesal untuk mengatakan bahwa ini tampaknya masih menjadi masalah di Benang 1.3.2.
Build saya di Netlify gagal ketika saya menggunakan Yarn 1.3.2 tetapi berhasil dengan Yarn 0.18.2.
Kesalahan pembuatan dengan cannot find module 'are-we-there-yet' dan hanya dengan flag produksi.

@adamreisnz , utas ini terlalu besar untuk melacak semua masalah.
Bisakah Anda membuat yang baru dengan skrip repro?

@bestander selesai, terima kasih.

Bagi seseorang yang masih belum bisa menjalankannya dan tidak ingin menginstal jq dapat menggunakan

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

saya menggunakan benang 1.17.3 dan simpul v10.16.2 di lerna monorepo. masih menghadapi masalah yang sama.

Saya bisa memastikannya juga.
Saya memiliki banyak dependensi, tetapi ketika saya menggunakan yarn install --production , hanya dua modul yang diinstal.
Perlu diperhatikan, saya menggunakan Lerna monorepo yang mirip dengan @hannadrehman dengan ruang kerja Yarn , yang mungkin menjelaskan perilaku ekstrem.

Versi benang: 1.22.0
Node: v12.16.1

npm install --production bekerja dengan sempurna.

@hannadrehman apakah proyek yang dimaksud adalah paket monorepo Anda?

Masalah yang sama seperti @ TAnas0

Apakah halaman ini membantu?
0 / 5 - 0 peringkat