Компонент React-masonry в Meteor

У меня возникли проблемы с установкой React-masonry-component в Meteor с помощью Cosmos:browserify . Сообщение об ошибке указывает, что не может быть найдена совместимая версия зависимости компонента, masonry (я полагаю, в npm). Тот же реагирующий пакет, похоже, работает в обычном проекте узла с использованием Webpack, поэтому я считаю, что эта проблема специфична для Meteor.

Вот мой файл packages.json.

{
  "externalify": "0.1.0",
  "react-router": "0.13.3",
  "react-pixi": "0.6.1",
  "radium": "0.13.4",
  "griddle-react": "0.2.13",
  "react-masonry-component": "1.0.1"
}

app.browserify.js

ReactRouter = require("react-router");
ReactPIXI = require("react-pixi");
Radium = require("radium");
Griddle = require("griddle-react");
Masonry = require("react-masonry-component");

Сообщение об ошибке во время процесса сборки

=> Modified -- restarting.
npm-container: updating npm dependencies -- externalify, react-router,
react-pixi, radium, griddle-react, masonry-layout, imagesloaded,
react-masonry-component...
npm ERR! Windows_NT 6.2.9200
npm ERR! argv
"C:\\Users\\Nick\\AppData\\Local\\.meteor\\packages\\meteor-tool\\1.1.4\\mt-    os.windows.x86_32\\dev_bundle\\bin\\\\node.exe"
"C:\\Users\\Nick\\AppData\\Local\\.meteor\\packages\\meteor-tool\\1.1.4\\mt-os.windows.x86_32\\dev_bundle\\bin\\node_modules\\npm\\bin\\npm-cli.js"
"install" "[email protected]"
npm ERR! node v0.10.36
npm ERR! npm  v2.7.3
npm ERR! code ETARGET

npm ERR! notarget No compatible version found:
masonry@'git+ssh://[email protected]/eiriklv/masonry.git'
**npm ERR! notarget Valid install targets:
npm ERR! notarget ["0.0.1","0.0.2"]
npm ERR! notarget
npm ERR! notarget This is most likely not a problem with npm itself.
npm ERR! notarget In most cases you or one of your dependencies are
requesting
npm ERR! notarget a package version that doesn't exist.
npm ERR! notarget
npm ERR! notarget It was specified as a dependency of
'react-masonry-component'
npm ERR! notarget


=> Errors prevented startup:

   While building package npm-container:
   error: couldn't install npm package

=> Your application has errors. Waiting for file change.

person Jason O.    schedule 04.08.2015    source источник
comment
Комментарий от автора компонента React-Masonry, Eirik: похоже, возникает проблема при попытке установить зависимости из github, а не только из npm, поскольку он пытается установить этот пакет: npmjs.com/package/masonry, который доступен в версиях 0.0.1 и 0.0.2, когда его следует установить github.com/eiriklv/masonry. По этой ссылке: meteorhacks.com/complete-npm-integration-for-meteor кажется, что вы можете указать только пронумерованную версию, что наводит меня на мысль, что поддержка npm в некотором роде ограничена.   -  person Jason O.    schedule 15.08.2015


Ответы (1)


Поскольку для Meteorhacks:npm требуется определенная версия/фиксация модуля npm или github, процесс сборки Meteor не смог включить этот React-Masonry-Component, чей package.json определяет зависимость без ссылки на конкретную фиксацию. Например,

"dependency": {"masonry" = "eirik/masonry"}

Чтобы избежать этой проблемы, я разветвил модуль npm от Eirik и опубликовал версию, которая определяет все его зависимости либо с конкретной версией npm, либо с коммитом github. Например,

"dependency": {"masonry" = "https://github.com/eirik/masonry/archive/dd74b7c6fe58e9f5de56d2ab442ac4b2d0fa5dd1.tar.gz"}

Подробнее об этом требовании см. https://github.com/meteorhacks/npm.

Теперь код работает со следующими настройками:

пакеты.json

"react-masonry-component-4meteorhacks-npm": "0.0.13"

app.browserify.js

Masonry = require("react-masonry-component-4meteorhacks-npm")(React);
person Jason O.    schedule 16.08.2015