Это может быть глупый вопрос, но почему-то я не могу найти решение для этого.
Я создал библиотеку nodejs с утилитами, которые я использую во многих проектах, скажем, она называется foo
.Эта библиотека использует модули, которые объявлены в ее package.json, например:
"dependencies": {
"jquery": "^3.2.1",
"moment": "^2.18.1",
"underscore": "^1.8.3",
"utf8": "^2.1.2"
},
Затем у меня есть приложение ionic3 (скажем, оно называется bar
), в котором я хочу использовать эту библиотеку, поэтомув bar
package.json
я заявляю: "foo": "../foo",
Проблема в том, что, когда я пытаюсь открыть свое приложение в браузере, я получаю следующее сообщение:
Error: Cannot find module "utf8" someScriptLocatedInFoo.js:1:26
webpackMissingModule someScriptLocatedInFoo.js:1
1259 someScriptLocatedInFoo.js:1
Bootstrap11Webpack
Я не получаю никаких сообщений об ошибках для jquery, момента или подчеркивания, потому что они объявлены в bar
package.json.Это заставляет меня думать, что, возможно, при сборке webpack не может найти модуль utf8
, расположенный в node_modules/foo/node_modules/utf8
.
Единственное, что я могу себе представить, чтобы обойти эту проблему, это установить зависимость foo
вручную в bar
, но это не имеет смысла, я не могу ожидать, что кто-то использует библиотеку, которую я создалустановить вручную все модули, от которых зависит.Или есть способ объявить в модулях foo
package.json
, чтобы они попросили npm установить в каталог bar
node_modules
при запуске npm install --save ../foo
?(без необходимости вручную принимать решение об использовании устаревших комплектов, как описано в ответе luchaos здесь ).