2015-01-21 4 views
11

Ich möchte eine Bibliothek verwenden, die mit browserify erstellt wurde. Die Bibliothek wurde ordnungsgemäß erstellt und funktioniert ordnungsgemäß, wenn sie selbst verwendet wird.Browser-Bibliotheken, die selbst durchsucht wurden: relative paths error

dass nun gebaut Bibliothek in meinem Anbieter/ist, und ich versuche, es in meiner neuen Anwendung zu erfordern:

var myLib = require('./vendors/myLib'); 

Wenn ich versuche, meine Anwendung browserify, es beschwert sich, dass es nicht kann einige der internen require Anweisungen innerhalb dieser Bibliothek finden:

Error: Cannot find module '../utils/logger' from '/myApp/vendor' 

Browserify versucht, zu sein scheint die lib aus dem falschen Verzeichnis neu zu bauen. Wie kann ich das beheben?


Weitere Besonderheiten:

Die lib sieht wie folgt aus:

myLib 
│ app.js 
│ 
├──models 
│ model.js 
│ 
├──utils 
     logger.js 

App requires Modell und Modell requires Logger mit require('../utils/logger').

Dies wird dann in myLib.js (browserify app.js --standalone myLib > myLib.js) erstellt.

So weit, so gut, myLib funktioniert gut.

In meiner neuen Anwendung habe ich myLib.js in das Verzeichnis/vendor, require es als oben aufgeführt, und erhalten Sie den Fehler, dass Browserify '../utils/logger' nicht finden kann.

In dieser Situation ich tun Kontrolle myLib, so könnte es ändern, wenn absolut notwendig, aber es ist ein anderes Projekt in der Firma und ich würde es vorziehen, wenn nicht notwendig. Ich sehe jedoch at least one other question auf SO, wo jemand eindeutig das gleiche Problem mit einer Bower-installierten Drittanbieter-Bibliothek hat.

Antwort

8

Dies scheint pretty borked zu sein.

Hier sind ein paar Optionen:

  • Run derequire auf myLib vor raubend.

  • Versuchen Sie, Ihre App browserifying wie so: ohne die Erweiterung im noParse Wert

    browserify({ 
        entries: ['./entry'], 
        noParse: ['/abs/path/to/vendors/myLib.js'], 
    }) 
    

    Wenn es, versuchen Sie es nicht funktioniert.

  • Minify myLib vor dem Konsumieren.

+0

Das ist unglaublich. Die referenzierte Lib hat nur 52 Sterne, aber 200k Downloads pro Monat.Dies ist eine Funktionalität, die im Grunde eine der grundlegendsten Mechanismen ist, die benötigt wird, wenn Bibliotheken veröffentlicht werden, und dennoch ist dies der "Weg", dies zu tun: D –

0

aaaah, ich habe es endlich funktioniert. Mit der Standalone-Option von browserify zusammen mit gulp-derquire hat es geschafft! Yay!