Less.js: 3.11.0 Не удается найти модуль «tslib»

Созданный на 10 февр. 2020  ·  19Комментарии  ·  Источник: less/less.js

Не удается найти модуль «tslib» 3.11.0

high priority

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

3.11.0 было таким большим обновлением.
Должен был быть 4.0.0

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

Я могу признать проблему. Подошла самая новая версия, 3.10.3 работала нормально. Может быть, @matthew-dean может проверить последнее слияние?

Шаги для воспроизведения с докером

  1. создать новую папку
  2. поместите туда несколько test.less , содержащих допустимый код less
  3. создайте Dockerfile со следующим содержимым:
FROM buildpack-deps:buster

COPY test.less /

# install npm
ENV HOME /root
RUN curl -sL https://deb.nodesource.com/setup_10.x | bash -
RUN apt-get install -y nodejs

# install less and compile something
RUN npm install -g less
WORKDIR /
RUN lessc test.less test.css
  1. Вызов docker build . в папке

Это вызовет следующую ошибку:

Step 6/8 : RUN npm install -g less
 ---> Running in a76855c18efa
/usr/bin/lessc -> /usr/lib/node_modules/less/bin/lessc
+ [email protected]
added 60 packages from 123 contributors in 4.306s
Removing intermediate container a76855c18efa
 ---> b78508030649
Step 7/8 : WORKDIR /
 ---> Running in 6cca70d0d858
Removing intermediate container 6cca70d0d858
 ---> d812408c6ef8
Step 8/8 : RUN lessc test.less test.css
 ---> Running in 6c8ef5fc9408
internal/modules/cjs/loader.js:638
    throw err;
    ^

Error: Cannot find module 'tslib'
    at Function.Module._resolveFilename (internal/modules/cjs/loader.js:636:15)
    at Function.Module._load (internal/modules/cjs/loader.js:562:25)
    at Module.require (internal/modules/cjs/loader.js:692:17)
    at require (internal/modules/cjs/helpers.js:25:18)
    at Object.<anonymous> (/usr/lib/node_modules/less/bin/lessc:9:13)
    at Module._compile (internal/modules/cjs/loader.js:778:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:789:10)
    at Module.load (internal/modules/cjs/loader.js:653:32)
    at tryModuleLoad (internal/modules/cjs/loader.js:593:12)
    at Function.Module._load (internal/modules/cjs/loader.js:585:3)
The command '/bin/sh -c lessc test.less test.css' returned a non-zero code: 1

Также воспроизводимо с grunt-contrib-less ("grunt-contrib-less": "2.0.0"), в котором используется "less": "^3.0.4".
Сообщалось также о проблеме с глотком.

3.11.0 было таким большим обновлением.
Должен был быть 4.0.0

Также возникли ошибки в тестовом наборе Yarn E2E (мы используем его для мониторинга различных проектов):
https://github.com/yarnpkg/berry/runs/436357016

Я подозреваю, что проекту просто нужно добавить зависимость к tslib — люди, как правило, забывают указать ее явно, потому что исходные файлы не ссылаются на нее, а ссылаются только на артефакты сборки.

Ну стреляй, извини все. Сборка проходила модульные тесты, поэтому я думаю, что здесь отсутствовал тест.

@siimots

3.11.0 было таким большим обновлением. Должен был быть 4.0.0

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

@арканис

Я подозреваю, что проекту просто нужно добавить зависимость к tslib — люди, как правило, забывают указать ее явно, потому что исходные файлы не ссылаются на нее, а ссылаются только на артефакты сборки.

Вероятно, это произошло потому, что tslib может быть неявной зависимостью (зависимостью зависимости) в файле devDependencies. Таким образом, тесты будут проходить, но обычный npm install не установит его.

+1, также вижу это с апострофеками. Похоже, это будет быстро исправлено, спасибо.

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

@matthew-dean Кстати, такая проблема — одна из причин, по которой мы внедрили Plug'n'Play в Yarn. Он выдает исключения, когда пакеты делают небезопасный доступ (например, tslib здесь), вместо того, чтобы позволить им ошибочно завершиться успешно. Конечно, для этого требуется использовать Yarn, так как npm его не поддерживает, так что это может быть не то, что вы ищете 🙂

Чтобы дать вам пример, вот что сообщил тест, который я связал:

image

Может ли кто-нибудь проверить, что эта сборка исправляет ситуацию? https://github.com/less/less.js/tree/release-3.11.1

Папки node_modules могут быть вложены где угодно. Таким образом, вы можете положить один в
ваш тест/ папка, которая используется только для этой цели и более удобна
взорвать. Мы делаем это с апострофом.

В понедельник, 10 февраля 2020 г., в 16:37 Мэтью Дин уведомления[email protected]
написал:

Может ли кто-нибудь проверить, что эта сборка исправляет ситуацию?
https://github.com/less/less.js/tree/release-3.11.1


Вы получаете это, потому что вы прокомментировали.
Ответьте на это письмо напрямую, просмотрите его на GitHub
https://github.com/less/less.js/issues/3469?email_source=notifications&email_token=AAAH27IM5UVBLOEMPE5BJR3RCHCJBA5CNFSM4KSHHJ62YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOELKMI5A,6899comment-58#issuecomment-58
или отписаться
https://github.com/notifications/unsubscribe-auth/AAAH27OZWO622K5JYHEYNCLRCHCJBANCNFSM4KSHHJ6Q
.

--

ТОМАС БУТЕЛЛ | ГЛАВНЫЙ ТЕХНИЧЕСКИЙ ДИРЕКТОР
АПОСТРОФЕКМЫ | apostrophecms.com | он/его/его

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

В понедельник, 10 февраля 2020 г., в 17:02 Том Бутелл [email protected] написал:

Папки node_modules могут быть вложены где угодно. Таким образом, вы можете положить один в
ваш тест/ папка, которая используется только для этой цели и более удобна
взорвать. Мы делаем это с апострофом.

В понедельник, 10 февраля 2020 г., в 16:37 Мэтью Дин уведомления[email protected]
написал:

Может ли кто-нибудь проверить, что эта сборка исправляет ситуацию?
https://github.com/less/less.js/tree/release-3.11.1


Вы получаете это, потому что вы прокомментировали.
Ответьте на это письмо напрямую, просмотрите его на GitHub
https://github.com/less/less.js/issues/3469?email_source=notifications&email_token=AAAH27IM5UVBLOEMPE5BJR3RCHCJBA5CNFSM4KSHHJ62YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOELKMI5A,6899comment-58#issuecomment-58
или отписаться
https://github.com/notifications/unsubscribe-auth/AAAH27OZWO622K5JYHEYNCLRCHCJBANCNFSM4KSHHJ6Q
.

--

ТОМАС БУТЕЛЛ | ГЛАВНЫЙ ТЕХНИЧЕСКИЙ ДИРЕКТОР
АПОСТРОФЕКМЫ | apostrophecms.com | он/его/его

--

ТОМАС БУТЕЛЛ | ГЛАВНЫЙ ТЕХНИЧЕСКИЙ ДИРЕКТОР
АПОСТРОФЕКМЫ | apostrophecms.com | он/его/его

@matthew-dean ... как я могу изменить свой файл package.json, чтобы опробовать вашу новую версию? Я по-прежнему могу получить 3.11.0, только если не укажу версию.

@boutell Это не самое четкое описание. Вы имеете в виду настройку какого-то подпакета в репо? Мне интересно, как вы это сделаете, чтобы не столкнуться с родительским алгоритмом разрешения Node node_modules .

@jmwolfe

https://docs.npmjs.com/files/package.json#git -urls-as-dependencies

Хм. Нет, вы правы, это не совсем подходит для вашей ситуации. Единственный
конечно, я могу придумать настройку локального прокси-сервера npm, в котором
этот конкретный модуль удовлетворен из вашего собственного местоположения, и тестирование npm
установить против этого. Локальные npm-прокси, подобные этому, на самом деле несложны.
приходят, но это своего рода много.

В понедельник, 10 февраля 2020 г., в 17:10 Мэтью Дин уведомления[email protected]
написал:

@boutell https://github.com/boutell Это не самое ясное
описание. Вы имеете в виду настройку какого-то подпакета в репо?
Мне интересно, как вы это сделаете, чтобы не столкнуться с родителем Node
Алгоритм разрешения node_modules.

@jmwolfe https://github.com/jmwolfe

https://docs.npmjs.com/files/package.json#git -urls-as-dependencies


Вы получаете это, потому что вас упомянули.
Ответьте на это письмо напрямую, просмотрите его на GitHub
https://github.com/less/less.js/issues/3469?email_source=notifications&email_token=AAAH27O3T4O2Z7VPTBA6HYLRCHGEPA5CNFSM4KSHHJ62YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOELKPPYQ#issuecomment-5#issuecomment-5
или отписаться
https://github.com/notifications/unsubscribe-auth/AAAH27JP6LEUZIENWBEWERLRCHGEPANCNFSM4KSHHJ6Q
.

--

ТОМАС БУТЕЛЛ | ГЛАВНЫЙ ТЕХНИЧЕСКИЙ ДИРЕКТОР
АПОСТРОФЕКМЫ | apostrophecms.com | он/его/его

@matthew-dean - использование этого в моем package.json помогает исправить gulp-less, который зависит от меньшего:

"dependencies": {
    "less": "git://github.com/less/less.js.git#afc9b86"
}

# npm list less
[email protected] C:\SVN\CMGR\branches\cmgr_pmm2\ContentManager\ContentManager            
+-- [email protected]                                                                           
| `-- [email protected]  deduped (git://github.com/less/less.js.git#afc9b8606272a01bf4392f71e4d9db59d06fddb9)                                                                                     
`-- [email protected]  (git://github.com/less/less.js.git#afc9b8606272a01bf4392f71e4d9db59d06fddb9)

мой полученный gulpfile.js загружается отлично.

пс. gulp-less и несколько других пакетов находятся в devDependencies.

Отлично, спасибо! Это опубликовано в npm?

Во вторник, 11 февраля 2020 г., в 00:53 Мэтью Дин уведомления[email protected]
написал:

Закрыто # 3469 https://github.com/less/less.js/issues/3469 через 842386b
https://github.com/less/less.js/commit/842386b8db5cb5afa4edf5a4c81d40bcbf47a6a2
.


Вы получаете это, потому что вас упомянули.
Ответьте на это письмо напрямую, просмотрите его на GitHub
https://github.com/less/less.js/issues/3469?email_source=notifications&email_token=AAAH27NPPJXO4IOUM2I2J3LRCI4NLA5CNFSM4KSHHJ62YY3PNVWWK3TUL52HS4DFWZEXG43VMVCXMZLOORHG65DJMZUWGYLUNFXW5KTDN5WW2ZLOORPWSZGOWRJHA5I#event-3025301621 ,
или отписаться
https://github.com/notifications/unsubscribe-auth/AAAH27I5LOTWY22VMC57QFLRCI4NLANCNFSM4KSHHJ6Q
.

--

ТОМАС БУТЕЛЛ | ГЛАВНЫЙ ТЕХНИЧЕСКИЙ ДИРЕКТОР
АПОСТРОФЕКМЫ | apostrophecms.com | он/его/его

@boutell да это так. Я только что проверил.

👍 спасибо за все, что вы делаете!

Во вторник, 11 февраля 2020 г., в 12:18 Джесси Вулф, [email protected]
написал:

@boutell https://github.com/boutell да, это так. Я только что проверил.


Вы получаете это, потому что вас упомянули.
Ответьте на это письмо напрямую, просмотрите его на GitHub
https://github.com/less/less.js/issues/3469?email_source=notifications&email_token=AAAH27P3RR4ZWL6PXZHC7N3RCLMXRA5CNFSM4KSHHJ62YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOELNIUHY558474 ,
или отписаться
https://github.com/notifications/unsubscribe-auth/AAAH27MKPLJTLBZ5NLHZWALRCLMXRANCNFSM4KSHHJ6Q
.

--

ТОМАС БУТЕЛЛ | ГЛАВНЫЙ ТЕХНИЧЕСКИЙ ДИРЕКТОР
АПОСТРОФЕКМЫ | apostrophecms.com | он/его/его

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