Браузеризация библиотек, которые сами были браузеризованы: ошибка относительного пути
Я хочу использовать библиотеку, которая была построена с использованием browserify. Библиотека построена правильно и работает нормально, когда она используется сама по себе.
Теперь эта встроенная библиотека находится в моем каталоге vendors/, и я пытаюсь потребовать ее в моем новом приложении:
var myLib = require('./vendors/myLib');
Когда я пытаюсь просмотреть приложение, оно жалуется, что не может найти некоторые внутренние require
заявления внутри этой библиотеки:
Error: Cannot find module '../utils/logger' from '/myApp/vendor'
Кажется, Browserify пытается пересобрать библиотеку из неправильного каталога. Как я могу это исправить?
Больше подробностей:
Библиотека выглядит так:
myLib
│ app.js
│
├──models
│ model.js
│
├──utils
logger.js
приложение requires
модель и модель requires
используя логгер require('../utils/logger')
,
Это затем встроить в myLib.js (browserify app.js --standalone myLib > myLib.js
).
Пока все хорошо, myLib работает отлично.
В моем новом приложении я поместил myLib.js в каталог /vendor, require
это как указано в верхней части, и получите ошибку, которую Browserify не может найти '../utils/logger'.
В этой ситуации я контролирую myLib, поэтому могу изменить его, если это абсолютно необходимо, но это еще один проект в компании, и я бы предпочел не делать этого при необходимости. Тем не менее, я вижу, по крайней мере, еще один вопрос о SO, когда у кого-то явно возникает такая же проблема с установленной бауэрской сторонней библиотекой.
2 ответа
Это кажется довольно обманчивым.
Вот несколько вариантов:
Run derequire on
myLib
перед употреблением.Попробуйте просмотреть приложение следующим образом:
browserify({ entries: ['./entry'], noParse: ['/abs/path/to/vendors/myLib.js'], })
Если это не работает, попробуйте без расширения в
noParse
значение.преуменьшать
myLib
перед тем как употреблять его.
Ааааа, я наконец заработал. использование автономной опции browserify вместе с gulp-derequire сделало свое дело! ура!