Yarn: `yarn install --production` не устанавливает правильные зависимости

Созданный на 12 окт. 2016  ·  115Комментарии  ·  Источник: yarnpkg/yarn

При запуске yarn install --production не устанавливаются необходимые зависимости forever . Похоже, это связано с наличием nodemon в devDependencies .

Ответ об ошибке:

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

Я создал здесь тестовое приложение:
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

Самый полезный комментарий

Привет всем, извините, что у вас уже довольно давно возникла эта проблема.
Я поручаю эту проблему себе, и сейчас она в приоритете, постараюсь исправить во время праздников.
Помощь и PR с отдельными тестами на взлом или исправление (в идеале) очень приветствуются.

Все 115 Комментарий

@ Daniel15 Я думаю, это из-за того, что у nodemon последняя версия Minimatch.

Функция компоновщика в настоящее время принимает в себя как deps, так и dev deps. Для производства аргументов этого следует избегать.

Даже на обычную пряжу устанавливать без аргументов производства. По фактическому пути устанавливается только последняя версия. Это тоже нужно проверить.

У меня возникает аналогичная проблема при запуске yarn install --production а затем при попытке запустить мою сборку с помощью webpack (запуск yarn install отлично работает).

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

и если я правильно помню, предыдущие попытки показали аналогичные ошибки с другим пакетом (не только graceful-fs )

Я тоже становлюсь очень похожим ... yarn install работает нормально. но с флагом --production я получаю следующее:

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

Может воспроизвести аналогичную проблему с:

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

Это установит is-glob но не его зависимость 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.

Кажется, что "забывает" путь зависимости gulp#liftoff во время обхода ..?

РЕДАКТИРОВАТЬ: меньший пример:

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

Также подтверждено, что удаление devDependencies перед запуском yarn --prod устанавливает правильное дерево зависимостей.

Моя команда разработчиков программного обеспечения столкнулась с этой проблемой, особенно с пакетом prr который является зависимостью от less и pouchdb . Многие другие пакеты также отсутствовали в сборке --production но prr был первым, который вызвал сбой в нашем продукте. Эта проблема стала для нас серьезным препятствием, так как размер нашего установщика значительно увеличился бы, если бы мы включили пакеты разработки, поэтому мы вернулись к использованию npm.

FWIW: я могу обойти проблему, удалив раздел devDependencies из package.json перед запуском yarn в производстве.

как сказал @gihrig, запуск npm prune --production может удалить devDependencies, что помогает решить эту проблему.

как сказал @gihrig, запуск npm prune --production может удалить devDependencies, что помогает обойти эту проблему.

Основное преимущество Yarn перед npm - это детерминированная директория node_modules т.е. такая же в dev, CI и производстве из коробки. Приводит ли запуск npm prune --production такому же поведению?

Мой текущий обходной путь - просто установить devDependencies в производственной среде. Диск стоит дешево (особенно на AWS), и детерминированная установка для меня гораздо важнее, чем место на диске. Так что мой «обходной путь» - просто действовать так, будто yarn --production сейчас не существует.

@tanx npm prune --production просто удалите devDependencies. И в моих тестах всегда удалялись одни и те же модули. С другой стороны, да, дисковое пространство дешевое, поэтому, возможно, лучше действовать так, как будто yarn --production не закрывается :)

@tanx npm prune --production просто удалите devDependencies. И в моих тестах всегда удалялись одни и те же модули.

Это именно тот образ мышления, который «работает на моей машине», описанный в сообщении блога Yarn . Проблема в том, что вы позволяете npm изменять состояние node_modules без проверки целостности пряжи через файл yarn.lock .

Надеюсь, что обсуждаемые обходные пути вскоре будут сняты с обсуждения благодаря обновлению пряжи, чтобы уважать разработки и разработки. Между тем, действительно есть о чем стонать с помощью пост-обработки "npm prune".

Описанная выше вещь yarn why не имеет отношения к делу. Похоже, это всего лишь побочный эффект того, как код why ищет пакеты.

Пытался найти хороший способ сделать это без добавления дополнительного прохода для распространения видимости после того, как граф был пройден один раз. Не уверены, будет ли приемлемо просто выделить видимость в отдельный этап ..?

Также есть несколько интересных крайних случаев, дело не только в правильном разрешении видимости:

  • A - необязательная зависимость производственной зависимости
  • B - необязательная зависимость от dev-зависимости
  • C - необязательная зависимость обоих

В этом случае необязательный флаг C зависит от dev vs. prod. В dev это было бы необязательно, в prod это было бы необязательно. Простое наследование необязательного флага от одного из родителей (или всегда наследование его от родителя prod) может привести к странностям.

Это все еще не исправлено в 0.17.2 😢

Реплика: https://gist.github.com/SimenB/2b179f3b6bca73ba824e1273ea38aed3

yarn

node index.js # works

yarn --prod

node index.js # explodes

/ cc @jkrems

Не кажется мне исправленным и в 0.17.2 (HearthSim / Joust # 169).

Я собираюсь снова открыть его, так как его можно легко воспроизвести с помощью инструкций

@wyze Проблема может быть в самой установке, а не в обрезке?

rm -rf node_modules/ && yarn && npm prune --production && node index.js завершается с той же ошибкой.

rm -rf node_modules/ && npm i && npm prune --production && node index.js работает.

Я предполагаю, что yarn и npm не предназначены для одновременного использования, поэтому может быть совпадение, что это вызывает ту же ошибку.

Различие node_modules после npm i и yarn показывает, что пряжа не выводит "_requiredBy" , возможно, почему npm prune портится после yarn install . Однако эта информация доступна в файле блокировки, так что это не должно быть проблемой, не так ли?

Та же проблема здесь, мы тестировали производственную сборку на докере и обнаружили, что с yarn --production пакет mime отсутствовал, даже если был установлен родительский модуль send (используемый экспрессом) .

Я думаю, что эту проблему нужно решать с максимальным приоритетом, потому что сборка может быть непредсказуемой.

В качестве обходного пути я просто удаляю раздел devDependencies из package.json в моем скрипте сборки.

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

Следуя совету @ dy-dx, я написал настраиваемую точку входа для Docker, чтобы обезвредить эту проблему во время разработки:

Прежде всего, вы должны установить jq в свой Dockerfile, добавив где-нибудь эту строку:

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

Затем добавьте этот скрипт куда-нибудь и используйте его как Dockerfile [ENTRYPOINT] или docker-compose entrypoint entrypoint.sh

Используйте предпочитаемую команду для Dockerfile [CMD] или docker-compose command Eg npm start

Тот же сценарий можно использовать в CI с некоторыми изменениями для создания изображения.

@SimenB Не могли бы вы удалить node_modules из своего пакета entries-test и попробовать?

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

Извлеките tar-файл v1.0.1, там есть папка node_modules с define-properties и другими модулями. И ни у одного из них нет файла *.js .

@torifat Ха, как это вообще произошло? Невозможно включить node_modules без использования bundledDependencies ...
Попробую запихнуть чистую (проекты удалил, придется пересоздавать).

@torifat Похоже, это пряжа виновата.

$ 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

Использование npm pack работает должным образом (в том же каталоге).

$ 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

Похоже, Yarn настолько одержима включением changelog , readme и package.json что даже включает их из node_modules ...

Используя [email protected]

@torifat Опубликован 1.0.2 сейчас (с использованием npm, чтобы избежать только что упомянутой ошибки), все та же проблема

Открыт # 2047 для ошибки, касающейся node_modules, но это отвлекающий маневр в этом выпуске, так как мой репро все еще действителен с опубликованным надлежащим архивом.

(извините за спам подписанным людям, я остановлюсь сейчас)

@SimenB Спасибо за

Похоже, это связано с номером 2104, который я только что открыл. node_modules/.bin после установки 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

Исправлено через # 2116.

# 2116 уже добавлен? Я не вижу этого в истории коммитов. Кажется преждевременным закрывать кучу проблем до того, как исправление будет доступно, по крайней мере, для основного, если не для помеченного выпуска. Кроме того, похоже, что # 2116 не проходит все три проверки. Я что-то упускаю?

Это все еще проблема в версии 0.18.0, которая включает (# 2116).

да, я могу подтвердить, что эта проблема все еще присутствует в 0.18.0

Из того, что я вижу, # 2116 должен был ввести тестирование для этой проблемы ( test.concurrent ('- флаг производства игнорирует зависимости разработчиков' ... или я ошибаюсь?

Тест не проверяет правильность поведения транзитивных зависимостей:
В моем случае проблема связана с общей зависимостью (lru-cache) между зависимостями prod (minimatch v2.0.0) и dev (useragent v2.1.9). Этот общий иждивенец не установлен в --production , даже если этого требует зависимость prod.

@beheh Я не вижу, где minimatch использует lru-cache , может поэтому не установлен в продакшене?

Я делаю несколько тестов с 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.

это случай, проиллюстрированный @SimenB

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

@SharpEdgeMarshall Спасибо за тестирование. Я добавлю это как тестовый пример.

@torifat может рассмотреть возможность повторного открытия и этого

@SharpEdgeMarshall Пробовал следующее, и он работает. Нужно разобраться в реальной проблеме.

screenshot 2016-12-06 21 18 44

@SimenB необходимо проверить перед повторным открытием. Это также может произойти из-за optionalDependencies . У которого есть еще одна нерешенная проблема.

@torifat мой https://github.com/yarnpkg/yarn/issues/761#issuecomment -260975012

РЕДАКТИРОВАТЬ: у которого нет дополнительных значений, grep optional yarn.lock выходит с 1

Теперь он не работает на Error: Cannot find module 'object-keys' вместо того, чтобы пропустить 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.

Кажется, теперь он обрабатывает на один уровень глубже, но потом не работает

@SimenB Просто попробовал с вашим:

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

И у меня все работает нормально. Можете ли вы сделать yarn cache clean и попробовать еще раз?

Нет, не получается

@SimenB Можете ли вы поделиться своим 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)

Для меня пример SimenB не работает с 0.18.0 даже после 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)

Файл блокировки:

# 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 Спасибо. Похоже, у моего кеша возникла проблема. После очистки моего кеша он не работает. Но с другой ошибкой. Дай мне немного времени, чтобы разобраться.

Кстати, я рекомендую использовать https://github.com/Mottie/Octopatcher в этой теме

Очень практично с множеством строк вывода

image

Я перестану спамить сейчас

@SimenB Ошибка в v0.18.0 но не может воспроизвести в последнем master .

ОБНОВЛЕНИЕ: странно! Опять не получается 😕

@torifat Я могу подтвердить, что не работает с мастером (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)

У меня такие же проблемы (некоторые пакеты не устанавливаются с флагом --production ) с текущей стабильной 0.17.10 :

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

Но когда я пробую текущую ночную сборку Yarn 0.19.0-20161207.1241 все необходимые пакеты были установлены правильно для моего приложения:

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 можете ли вы попробовать последнюю ночную сборку и убедиться, что проблема сохраняется.

Используется в моих контейнерах докеров: https://gist.github.com/nodkz/b843d65a3430a4f510e5f5eb0cc759d2

@nodkz 18 вышел и стабилен (я думаю?), но, как можно увидеть в сообщении прямо над вашим, мастер (по крайней мере, 2 дня назад) все еще имеет ошибку

Думаю, по-прежнему требуется install yarn@rc :

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

Тогда это ново, я получил 0.18 несколько дней назад, просто установив. В любом случае, ошибка все еще воспроизводится в версии 0.18.

@nodkz Repro - это:

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

Да, мы сталкиваемся с похожими проблемами и с нашими проектами:

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

Не работает как с 0.18, так и с последней основной веткой.

Согласовано. Все еще в состоянии воспроизвести с последним.

Я думаю, что моя проблема похожа или такая же, как эта. Сборка не работает на Heroku, но только в производственной среде. Кеширование отключено.

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

У меня тоже есть эта проблема. На данный момент я все еще использую yarn install для производства, поскольку yarn install --production неправильно устанавливает нужные зависимости.

Боюсь, я не могу этого сделать, так как он жестко запрограммирован на yarn install --production в пакете сборки Heroku, как мне кажется (ссылка https://github.com/heroku/heroku-buildpack-nodejs/issues/337)

@adamreisnz Извините, я имел в виду не вашу, а исходную проблему.

В качестве временного решения вашей проблемы я предлагаю вам переместить все devDependencies в dependencies пока эта проблема не будет исправлена.

@dashmug А, хорошо, без проблем.

В любом случае, я предпочитаю использовать npm на Heroku, пока Yarn не станет более стабильным, чем возиться с хакерскими решениями. Я поместил yarn.lock в свой .gitignore чтобы он не загружался в репо / heroku. Таким образом, я все еще могу использовать Yarn локально, но это не повлияет на сборки на Heroku.

@adamreisnz Это yarn , тебе не кажется?

@dashmug Не совсем, по крайней мере, не для нас. Я не использую его для блокировки версий пакетов на месте. У нас очень актуальные зависимости и нет проблем с "работает на моей машине". Моя основная причина перехода на yarn вместо npm была из-за скорости, которая для сложных приложений с большим количеством зависимостей, как я видел, увеличилась с 5 минут для npm install до 22 секунд с yarn.

Пока yarn нестабильна, я могу жить с немного более медленным процессом сборки на Heroku, пока я могу использовать yarn локально для разработки и иметь быструю установку :)

Yarn рекламируется как незаменимая замена npm. Однако некоторые из проблем, с которыми мы столкнулись и которые до сих пор не решены, например эта, не позволяют нам использовать его как таковое. Поэтому в настоящее время я рассматриваю это как дополнительный инструмент, который полезен для одного, но не подходит для другого. Я не сомневаюсь, что со временем все будет отлично :)

Кажется, это исправлено для меня в 0.18.1.

Heroku использовал 0.18.1 в то время, когда это не удалось, так что это еще не исправлено.

Эта проблема исправлена ​​для меня в версии 0.18.1.

Мой предыдущий репро исправлен на 0,18,1 🎉

Завтра попробую с настоящим приложением

0.18.1 исправляет мои проблемы. Я счастливый турист 🎉

Пробовал 0.18.1 с нетривиальным приложением, которое раньше давало сбой, и теперь оно, похоже, работает! 🎉

Думаю, я скоро попробую еще раз :)

Извините, все еще не работает с 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

Установка NODE_MODULES_CACHE=false тоже не помогла.

Вот дерево зависимостей:

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

Я думаю, проблема в глубокой зависимости через google-cloud . Это производственный модуль, и оба bable-cli и instanbul предназначены только для разработчиков.

Более того, когда я использую yarn why abbrev , он не может подобрать родительских иждивенцев google-cloud и 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 Поднять новый вопрос по этому поводу или нет?

istanbul#nopt тоже выглядит неправильно в выводе why .
Я сейчас собираюсь работать, тогда буду тестировать в реальном приложении

@SimenB спасибо, дайте мне знать, если вам нужна дополнительная информация, например, весь мой список модулей package.json.

Изменить: на самом деле здесь это на всякий случай, так как я сейчас собираюсь спать;

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

Это все еще не работает для работающего приложения. Похоже, что Ярн не может идти глубокими путями. Вот npm ls entities после 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]

Так же, как @adamreisnz , yarn why не выбирает правильное дерево.

$ 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 также выглядит неправильно в выводе почему.

Вы правы, похоже, что в этом суть проблемы. Кажется, что nopt является частью пакета istanbul , а не google-cloud и / или babel-cli , и, возможно, поэтому он не устанавливает его для производства среды, потому что istanbul не является зависимостью от продукта.

Привет всем, извините, что у вас уже довольно давно возникла эта проблема.
Я поручаю эту проблему себе, и сейчас она в приоритете, постараюсь исправить во время праздников.
Помощь и PR с отдельными тестами на взлом или исправление (в идеале) очень приветствуются.

У нас такая же проблема в prod env с lib bl которая является зависимостью от дополнительных зависимостей 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)

Спасибо за вашу помощь 😊

Это сработает, если я вручную добавлю bl в наш package.json ...

Есть новости по этому поводу?

Еще нет, я создаю специальную программу проверки commonJS, которая проверяет структуру node_modules независимо от алгоритмов подъема и разрешения Yarn https://github.com/yarnpkg/yarn/pull/2419.
Он сможет отловить все случаи, описанные в этой ошибке, и уберечь нас от будущих регрессов.

@kittens смотрит, что здесь происходит.
Ошибка нетривиальна, поэтому любые дополнительные сведения приветствуются.

Хорошо, сейчас собираем все репродукции с последним стволом.
Пример в первом комментарии больше не воспроизводится, и yarn check --verify-tree проходит

Этот тоже не воспроизводит https://github.com/yarnpkg/yarn/issues/761#issuecomment -260975012 и https://github.com/yarnpkg/yarn/issues/761#issuecomment -265823529

Да, это репро было исправлено в 0.18.1.

2 идеи:

Есть ли какой-нибудь журнал с происходящими решениями, которым я могу поделиться с вами?

Кроме того, я могу предоставить вам файл блокировки, который воспроизводит его на работе, но вы не сможете установить его из-за личных данных. Вы могли бы возиться, пропустить получение пакетов и просто возиться с деревом?

@SimenB , так что у вас есть еще один пример, когда разрешение нарушено для --production install?

В этом случае вы можете попробовать:

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

С последней основной веткой.
Если вы не хотите публиковать журналы, напишите мне на

Да, 0.18.1 все еще была сломана, не тестировал 0.19 (или мастер). Если он все еще воспроизводится (надеюсь, что нет!), Я пришлю вам логи в частном порядке

Закроем эту задачу, потому что проблема с названием решена.
Есть 2 открытых, которые я еще не перепроверил: # 2263 и # 2141, не стесняйтесь комментировать там или создавать новый для своего дела и отправить мне копию.

2all: когда вы комментируете, что установка неправильная, включите package.json, чтобы другие могли воспроизвести это.
Престижность @jkrems за то, что сделал еще один шаг и отправил замечательный сценарий воспроизведения: https://github.com/yarnpkg/yarn/issues/761#issuecomment -265823529

@bestander , вы также перепроверили https://github.com/yarnpkg/yarn/issues/761#issuecomment -268130124?

@adamreisnz , не могли бы вы еще раз поделиться package.json?

https://github.com/yarnpkg/yarn/issues/761#issuecomment -268130124 - другая проблема.

Тот не работает для yarn install --production .

Эта проблема связана с успешным завершением yarn install --production но при этом происходит неправильная работа.

@bestander Я поделился этим в комментарии ниже, https://github.com/yarnpkg/yarn/issues/761#issuecomment -268201708, ура

Все еще не работает с мастером (c98df16b) для меня ...

yarn check --verify-tree бросает, это многообещающе. Однако многие из них - отделы разработки.

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.

Запустив приложение, оно не работает из-за отсутствия любого совпадения.

npm ls показывает другие недостающие значения, что имеет больше смысла

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]

И это было наблюдение / причина проблемы: https://github.com/yarnpkg/yarn/issues/761#issuecomment -268331340

Вы правы, похоже, что в этом суть проблемы. Похоже, что nopt является частью пакета istanbul, а не google-cloud и / или babel-cli, и, возможно, поэтому он не устанавливает его для производственных сред, потому что istanbul не является зависимостью от prod.

Ой, извини, @SimenB

yarn check --prodution --verify-tree

Я отредактирую свой комментарий

Выполнение yarn check --verify-tree --production дает хороший результат (согласуется с 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 Я пришлю вам package.json, yarn.lock и подробный журнал установки log

@dashmug , вы хотите, чтобы я создал новый тикет для этой проблемы? По-прежнему существует проблема установки некорректных зависимостей (хотя и для производства), поэтому я думаю, что это связано с этим тикетом.

@bestander Электронное
Хотя @finn-no/express-base не является общедоступным, остальные 3 пакета в выводе доступны, так что, надеюсь, вы можете воспроизводить его только с общедоступными пакетами.

Стоит ли открывать новый выпуск?

@adamreisnz , не могли бы вы тогда создать новый выпуск?
Я могу воспроизвести это, но это другая проблема, чем та, что была в названии

Это связано. Наверное, по той же причине. Просто другой симптом. Я бы назвал это отдельной проблемой, поскольку это не совсем то, что написано в названии.

@SimenB , спасибо, я посмотрю

Хорошо, ребята.

@bestander Создание пакета только с этими 3 в выводе, который терпит неудачу, делает его воспроизводимым на master для меня только с общедоступными deps. Это не минимальное воспроизведение, но все же

{
  "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 из 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"
  }
}

Что интересно, выдает 4 ошибки вместо 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.

Я не уверен, такая же проблема или нет, но вот результат (проверено с 0.19.1)

Думаю, я нашел основную причину проблемы с установкой.
Невозможность установки пакета может быть воспроизведена с помощью следующего package.json:

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

И тогда команды

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

В этой конфигурации abbrev не устанавливается.

abbrev используется istanbul и nopt (как видно из yarn why abbrev ). nopt используется istanbul и node-pre-gyp (который используется bcrypt и gamepad ).

При дедупликации abbrev в поднятии пакетов следующий код используется для определения новой функции isIgnored для записи подъема:

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

abbrev - одна из первых обрабатываемых записей подъема. В этот момент существующая запись - istanbul#abbrev (игнорируется, потому что istanbul игнорируется), а дублирующая запись - istanbul#nopt#abbrev , которая также игнорируется в то время по той же причине. .

Поскольку обе записи игнорируются в то время, функция игнорирования не настраивается, как предполагалось, потому что nopt будет игнорироваться в более позднем дедупликации из-за зависимости от node-pre-gyp . Статус игнорирования обеих записей может измениться в любой момент, поэтому новая функция игнорирования должна смешивать их.

И действительно, проблема с установкой исчезнет, ​​если мы заменим эти строки на

          // 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 , отличная находка!
Вы бы отправили пиар?
В integration.js есть отключенный тест для "не должен терять зависимости при установке с --production", который сейчас нужно исправить.

@bestander , только что протестировал его, и это исправление вызывает переполнение стека в упомянутом вами тесте, поэтому его нельзя применить. Появится следующий цикл:

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

Итак, наивный рекурсивный подход к вызову отсутствует ...

Да, я считаю, что его нужно немного настроить, но идея кажется правильной

У меня такая проблема с модулем phantomjs-prebuilt (как зависимость зависимости) с пряжей 0.27.5-1.
Итак, теперь я делаю пустышку yarn add phantomjs-prebuilt перед yarn install --production .

Я с сожалением должен сказать, что это все еще кажется проблемой в Yarn 1.3.2.
Мои сборки на Netlify терпят неудачу, когда я использую Yarn 1.3.2, но преуспеваю с Yarn 0.18.2.
Ошибки сборки с cannot find module 'are-we-there-yet' и только с флагом производства.

@adamreisnz , эта ветка слишком велика, чтобы отслеживать все проблемы.
Не могли бы вы поднять новый с репро скриптом?

@bestander готово, спасибо.

Для тех, кто все еще не может заставить его работать и не хочет устанавливать jq, можно использовать

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

Я нахожусь на пряжи 1.17.3 и узле v10.16.2 в lerna monorepo. все еще сталкивается с той же проблемой.

Я тоже могу это подтвердить.
У меня много зависимостей, но когда я использую yarn install --production , устанавливаются только два модуля.
Примечательно, что я использую монорепозиторий Lerna, похожий на @hannadrehman, с рабочими пространствами Yarn , что может объяснить экстремальное поведение.

Версия пряжи: 1.22.0
Узел: v12.16.1

npm install --production работает отлично.

@hannadrehman - это проект, о котором идет речь, это пакет вашего монорепозитория?

Та же проблема, что и @ TAnas0

Была ли эта страница полезной?
0 / 5 - 0 рейтинги