Vm2: Добавить модуль `coffee-script` в качестве зависимости

Созданный на 8 апр. 2017  ·  23Комментарии  ·  Источник: patriksimek/vm2

При запуске вашего модуля с помощью кода, преобразованного webpack/babel, я получаю следующую проблему:

Module not found: Error: Can't resolve 'coffee-script' in '/node_modules/vm2/lib'
 @ ./~/vm2/lib/main.js 19:10-34
 @ ./~/vm2/index.js
 @ ./lib/config.js
 @ ./lib/server.js

https://github.com/patriksimek/vm2/blob/master/lib/main.js#L19

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

UPD: это не запрос функции, это проблема с зависимостями модуля vm2. Пока в этом модуле нет этой строки , он не будет работать с параметром компилятора, указанным как coffee-script , в любой среде без установленного модуля coffee-script.

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

@dkfiresky Вау, вы действительно ожидали, что я заставлю десятки тысяч пользователей скачать coffee-script, даже если он им не нужен, только потому, что вы не хотите ждать правильного решения? Печально.

@n-riesco На самом деле это уже поддерживается. Проблема в том, что отказ от поддержки опции coffeescript является критическим изменением, и я хотел бы сначала попробовать лучшее решение (если оно есть).

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

Спасибо, что сообщили о проблеме. У меня почти нет опыта работы с Webpack, поэтому, возможно, я ошибаюсь, но что, если вы добавите coffee-script в качестве зависимости в родительском проекте? Я предполагаю, что процессы Webpack требуют того же, что и Node - он ищет все папки node_modules вплоть до корня.

Я не хочу добавлять coffee-script в качестве зависимости моего собственного проекта только потому, что этого требует ваш модуль. Я не использую coffee-script .

Если вы используете чей-то модуль в своем проекте, вы должны объявить его как зависимость.

Кроме того, если кто-то установит ваш модуль, и у этого человека нигде не будет установлен модуль coffee-script (в проекте или глобально), это также вызовет эту ошибку. Это не зависит от Webpack.

Хорошо, я думал, что вы используете coffee-script. В этом случае эта библиотека не совместима с webpack. Попробую разобраться, если будет свободное время.

Это не случай совместимости с webpack.

Это тот случай, когда вы публикуете и поставляете свой модуль в npm.

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

Причина в том, что вы явно требуете coffee-script в своем коде, который предполагает, что он должен быть каким-то образом установлен.

Если у вас уже установлен coffee-script на вашей машине — это нормально и будет работать, в противном случае это вызовет проблему, когда я нигде не установил coffee-script и запустил виртуальную машину с установленной опцией компилятора. к одному из «coffeescript», «coffee-script», «cs» или «text/coffeescript» (как указано в https://github.com/patriksimek/vm2/blob/master/lib/main.js#L14- Л18).

Также я не согласен с тем, что это feature request , поскольку ваш модуль не работает с компилятором coffee-script , если он еще не установлен. И в документации ничего не говорится о требовании предустановки coffee-script .

Да, вы точно описали, как это работает прямо сейчас. Библиотека ожидает, что у пользователя будет установлен coffee-script, если компилятор настроен на кофе.

Вы правы насчет документов, они обновлены.

Да, исправление документации не решает проблему. У вас все еще есть строка require('coffee-script') в вашем коде, которая приведет к ошибке, по крайней мере, для webpack.

Да, и, как я писал в предыдущем посте, я рефакторинг этого в какой-то механизм плагинов, чтобы он был совместим с веб-пакетом.

Не беда, если вам так тяжело выполнить одну простую команду:

> npm install coffee-script --save

Я больше не буду использовать и ждать, пока ваш проект решит проблему.

@patriksimek Лично я вижу преимущество в наличии какого-то механизма плагинов.

Как насчет того, чтобы что-то простое вроде options.compiler было функцией?

Затем пользователи, которым нужен CoffeeScript, могут установить options.compiler на (code) => { return require('coffee-script').compile(code, {header: false, bare: true}); } .

@dkfiresky Вау, вы действительно ожидали, что я заставлю десятки тысяч пользователей скачать coffee-script, даже если он им не нужен, только потому, что вы не хотите ждать правильного решения? Печально.

@n-riesco На самом деле это уже поддерживается. Проблема в том, что отказ от поддержки опции coffeescript является критическим изменением, и я хотел бы сначала попробовать лучшее решение (если оно есть).

@patriksimek Я ожидаю, что вы правильно доставите свой модуль. Использование coffee-script является вашей собственной ответственностью. Если вы используете его, вы должны определить его как зависимость. Если вы не согласны, удалите этот оператор require и параметр компилятора, который указывает coffee-script в качестве параметра.

Эта проблема была создана, потому что ваш модуль не работает из коробки. Ждать 18 дней, пока вы запустите простую команду установки, звучит как шутка.

Более того, если вы заявляете, что ваш модуль компилирует coffee-script , вы должны поставить этот модуль как зависимость в вашем package.json .

вы действительно ожидали, что я заставлю десятки тысяч пользователей скачать coffee-script

Это то, что вы сделали require('coffee-script') в своем коде . Вы ожидаете, что я установлю coffee-script, даже если я им не пользуюсь.

Ждать 18 дней, пока вы запустите простую команду установки, звучит как шутка.

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

@patriksimek этот модуль несовместим и не запускается ни в одной среде без установленной coffee-script .

@dkfiresky Конечно, если ты так думаешь. Я больше не заинтересован в том, чтобы убеждать вас, что вы не правы. Можем ли мы прекратить эту бесполезную дискуссию?

@patriksimek да, конечно. Пожалуйста, прочитайте некоторые документы npm.

Я тоже получаю это в новом проекте реагирования, до того, как я добавил vm2 в качестве зависимости, у меня не было ошибок в кофе-скрипте

Failed to compile.

/Users/mark/node_modules/coffee-script/lib/coffee-script/coffee-script.js
Module not found: Can't resolve 'module' in '/Users/mark/node_modules/coffee-script/lib/coffee-script'

Несмотря на то, что тон обсуждения был не очень конструктивным, я действительно считаю, что coffee-script следует добавить в качестве зависимости. Это было бы очень простое решение, позволяющее использовать этот пакет в различных средах (например, Webpack, Next и т. д.).

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