понимание менеджера пакетов узлов и того, как запускать / запускать приложения - PullRequest
0 голосов
/ 08 июля 2019

[явно нубский вопрос] По сути, у меня нет правильной мысленной модели npm и того, как пакеты правильно установлены, работают и впоследствии запускаются.

Я проиллюстрируюс двумя примерами.Решение этих проблем должно улучшить эту (отсутствующую) ментальную модель.

Например, я установил этот пакет в каталог с именем npm.При первой установке были некоторые жалобы от установщика.Вспоминая процедуру установки возвращает только одну ошибку, которую я не выбрал: ENOENT: no such file or directory, open '/Volumes/Mo/Users/main/r/npm/package.json' Насколько я понимаю, npm устанавливает каталог node_modules, в котором он устанавливает вызываемый пакет и множество зависимостей.В каталоге пакета @mapbox/makizushi находится файл package.json.

Если я cd в указанном выше каталоге в консоли, то запустите первую команду, предложенную пакетом:

node
> var makizushi = require('makizushi');
Thrown:
{ Error: Cannot find module 'makizushi'
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:690:17)
at require (internal/modules/cjs/helpers.js:25:18) code: 'MODULE_NOT_FOUND' }

Что странно, поскольку файлы установлены, и консоль запускается из своего каталога ...

Второй пример с использованием этого хранилища .Я пытался как загрузить и запустить npm install, так и с полной командой npm install @webgeodatavore/express-simplestyle-spec

При первой установке выдается ряд ошибок, например:

> mapnik@3.7.2 install /Volumes/Mo/Users/dvodvo/r/npm/express-simplestyle-spec-master/node_modules/mapnik
> node-pre-gyp install --fallback-to-build
[...]
gyp ERR! cwd /Volumes/Mo/Users/main/r/npm/express-simplestyle-spec-master/node_modules/mapnik
gyp ERR! node -v v10.16.0
gyp ERR! node-gyp -v v3.8.0
gyp ERR! not ok
[...]
npm WARN @webgeodatavore/express-simplestyle-spec@0.2.0 No repository field.
npm WARN @webgeodatavore/express-simplestyle-spec@0.2.0 No license field.
[...]
npm ERR! mapnik@3.7.2 install: `node-pre-gyp install --fallback-to-build`
npm ERR! Failed at the mapnik@3.7.2 install script.

Я помнюэта ошибка появляется в первом случае (некоторое время назад).

Итак, как можно справиться с такими проблемами зависимости?Если установщик направляет установку в каталог /usr/local/lib/node_modules/npm/node_modules/, в чем смысл жалобы package.json?При условии правильной установки, как пакет вызывается и по какому пути?

1 Ответ

0 голосов
/ 08 июля 2019

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

mkdir project
cd project/
npm init -y
npm install makizushi

Команда npm init -y создаст для вас файл package.json в текущем каталоге.Package.json - это «манифест», который npm будет читать, когда дело доходит до установки всех зависимостей проекта (а также источник интересных вещей, таких как сценарии развертывания, управление версиями и другие полезные свойства публикации).Затем npm install makizushi запишет пакет нужной версии в файл package.json, а затем создаст папку node_modules.

Более старый способ установки зависимости как зависимости, специфичной для проекта:

npm install --save makizushi

Хотя в последних версиях npm этого не требуется, IMO помогает точно понять, где будет находиться этот пакет.быть установленным в отличие от 2 других мест, где может быть установлен пакет: глобально и просто зависимость для разработки.

npm install -g makizushi
npm install --save-dev makizushi
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...