Браузеризация библиотек, которые сами были браузеризованы: ошибка относительного пути

Я хочу использовать библиотеку, которая была построена с использованием 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 сделало свое дело! ура!

Другие вопросы по тегам