Ошибка сборки Browserify с локальной версией модуля npm в моих зависимостях package.json

Мне удалось настроить package.json и собрать зависимости моего приложения в пакет с помощью browserify, однако, когда я пытаюсь отключить одну из зависимостей для разветвленной локальной копии, сборка завершается ошибкой.

Это работает и устанавливает восходящую версию (исключая другие модули):

"dependencies": {"react-bootstrap": "0.13.0"}

Локальный путь к моей вилке не работает:

"dependencies": {"react-bootstrap": "/home/tom/dev/react-bootstrap/"}

Как и использование npm link, что кажется «правильным» способом управления локальной версией с минимальными трудностями.

Наконец, использование URL-адреса git для моей вилки также не работает:

"dependencies": {"react-bootstrap": "git://github.com/tompaton/react-bootstrap.git"}

Я попытался обновить package.json в модуле react-bootstrap, чтобы URL-адрес репозитория указывал на tompaton/react-bootstrap, но это не имело никакого значения.

Сообщение об ошибке, которое я получаю, не проливает света на ситуацию:

(cycles)tom@neon:~/dev/flask_projects/cycles!$ npm run build

> [email protected] build /home/tom/dev/flask_projects/cycles
> browserify -r react-bootstrap -o static/lib-runtime.js

Error: Cannot find module 'react-bootstrap' from '/home/tom/dev/flask_projects/cycles'
    at /home/tom/dev/flask_projects/cycles/node_modules/browserify/node_modules/browser-resolve/node_modules/resolve/lib/async.js:50:17
    at process (/home/tom/dev/flask_projects/cycles/node_modules/browserify/node_modules/browser-resolve/node_modules/resolve/lib/async.js:119:43)
    at /home/tom/dev/flask_projects/cycles/node_modules/browserify/node_modules/browser-resolve/node_modules/resolve/lib/async.js:128:21
    at load (/home/tom/dev/flask_projects/cycles/node_modules/browserify/node_modules/browser-resolve/node_modules/resolve/lib/async.js:60:43)
    at /home/tom/dev/flask_projects/cycles/node_modules/browserify/node_modules/browser-resolve/node_modules/resolve/lib/async.js:66:22
    at /home/tom/dev/flask_projects/cycles/node_modules/browserify/node_modules/browser-resolve/node_modules/resolve/lib/async.js:21:47
    at Object.oncomplete (fs.js:107:15)

npm ERR! [email protected] build: `browserify -r react-bootstrap -o static/lib-runtime.js`
npm ERR! Exit status 1
npm ERR! 
npm ERR! Failed at the [email protected] build script.
npm ERR! This is most likely a problem with the Cycles package,
npm ERR! not with npm itself.
npm ERR! Tell the author that this fails on your system:
npm ERR!     browserify -r react-bootstrap -o static/lib-runtime.js
npm ERR! You can get their info via:
npm ERR!     npm owner ls Cycles
npm ERR! There is likely additional logging output above.
npm ERR! System Linux 3.13.0-43-generic
npm ERR! command "/usr/bin/node" "/usr/bin/npm" "run" "build-runtime"
npm ERR! cwd /home/tom/dev/flask_projects/cycles
npm ERR! node -v v0.10.26
npm ERR! npm -v 1.4.3
npm ERR! code ELIFECYCLE
npm ERR! 
npm ERR! Additional logging details can be found in:
npm ERR!     /home/tom/dev/flask_projects/cycles/npm-debug.log
npm ERR! not ok code 0

/home/tom/dev/flask_projects/cycles/npm-debug.log имеет ту же информацию.

Папка node_modules выглядит так:

(cycles)tom@neon:~/dev/flask_projects/cycles!$ ls -al node_modules/react-bootstrap/
total 64
drwxrwxr-x  7 tom tom 4096 Dec 16 22:00 .
drwxrwxr-x 14 tom tom 4096 Dec 16 22:00 ..
drwxr-xr-x  6 tom tom 4096 Dec 16 22:00 docs
-rw-r--r--  1 tom tom 3886 Dec 16 22:00 Gruntfile.js
drwxr-xr-x  3 tom tom 4096 Dec 16 22:00 ie8
-rw-r--r--  1 tom tom  228 Dec 16 22:00 .jshintrc
-rw-r--r--  1 tom tom  425 Dec 16 22:00 karma.ci.js
-rw-r--r--  1 tom tom  390 Dec 16 22:00 karma.dev.js
-rw-r--r--  1 tom tom 1123 Dec 16 22:00 LICENSE
-rw-r--r--  1 tom tom  146 Dec 16 22:00 .npmignore
-rw-r--r--  1 tom tom 3596 Dec 16 22:00 package.json
-rw-r--r--  1 tom tom 1345 Dec 16 22:00 README.md
drwxr-xr-x  3 tom tom 4096 Dec 16 22:00 src
drwxr-xr-x  3 tom tom 4096 Dec 16 22:00 test
drwxr-xr-x  5 tom tom 4096 Dec 16 22:00 tools
-rw-r--r--  1 tom tom   37 Dec 16 22:00 .travis.yml

Итак, npm install загрузил правильную версию, и с правами все в порядке.

Может ли кто-нибудь сказать мне, как это решить? или, по крайней мере, чтобы указать мне на лучшую информацию о том, что такое фактическая ошибка?


person Tom    schedule 16.12.2014    source источник
comment
Вам удалось решить проблему? Я хочу использовать npm link, чтобы сделать путь тестов короче: x = require("../../../x") -> x = require("x"). Как вы думаете, возможно ли решить эту проблему с помощью npm link таким образом, чтобы он был совместим с браузером? (Я задал вопрос здесь, если вы хотите ответить: environme" title="как избежать длинных относительных путей с жасмином в разных средах"> stackoverflow.com/questions/28446269/ )   -  person inf3rno    schedule 11.02.2015
comment
адекватного решения на сегодняшний день нет. что я сделал, так это установил исходную версию, используя npm install react-bootstrap, а затем вручную скопировал измененные файлы из моей локальной папки сборки в папку node_modules/react-bootstrap. это означало, что у моего браузерного lib-runtime.js была моя копия файлов, но, очевидно, это неправильный способ сделать это или простой вариант для обслуживания.   -  person Tom    schedule 13.02.2015
comment
Вы пробовали символическую ссылку и NODE_PATH? Люди предложили мне их. (Сейчас я работаю над другими проблемами, поэтому у меня еще не было времени их проверить.)   -  person inf3rno    schedule 13.02.2015
comment
Вам следует попробовать добавить родительский каталог вашего разветвленного репо в NODE_PATH. На мне это решило проблему. Afaik NODE_PATH поддерживается браузером, а ссылка npm — нет. Не знаю, я новичок в этой теме... :-)   -  person inf3rno    schedule 13.02.2015


Ответы (1)


Запустите browserify или задачу gulp с NODE_PATH=./node_modules следующим образом:

NODE_PATH=./node_modules gulp scripts

Это скажет node-resolve и, соответственно, browserify использовать эту локальную папку для разрешения всех ее зависимостей.

person mAAdhaTTah    schedule 11.03.2016