2014-09-01 15 views
7

Ich habe diese Datei (ein großes Bündel von ein paar JS-Dateien), die mit browserify (5.10.0 ) bis vor ein paar Tagen verwendet und jetzt nicht."Fehler: Pfad muss eine Zeichenfolge sein" (v5.10.0)

Dies ist, was ich bin mit:

$ browserify index.js -o dist/out.bundle.js 

Und der Ausgang ist:

Error: path must be a string 
at /usr/local/lib/node_modules/browserify/node_modules/resolve/lib/async.js:15:16 
at process._tickCallback (node.js:419:13) 

Jeder weiß, was dieses verursachen könnte? Gibt es eine Möglichkeit, dies zu debuggen, um herauszufinden, was browsers boomt?

Prost

Antwort

2

Leider wird die Fehlermeldung ist nicht sehr hilfreich, aber was passiert ist, ist dies:

Browserify das resolve Modul verwendet, sollte die Dateien require Anrufe Laden zu suchen. Irgendwie, anstatt wie üblich einen Pfad zu passieren, hat er etwas anderes (d. H. Keine Zeichenfolge).

Das könnte theoretisch fast alles sein, aber ich vermute, es ist entweder undefined oder ein wirklich absurder Wert wie ein Objekt oder eine Funktion. Grundsätzlich alles, was theoretisch an require übergeben werden könnte und in Müll enden.

Sie haben nicht gesagt, ob Sie in der Zwischenzeit Module aktualisiert, neue Transformationen hinzugefügt oder einen Code geändert haben. Da Sie meinen, dass dies mit genau der Version von browserify funktioniert, die Sie jetzt verwenden, gehe ich auf eine Stufe und denke, dass es sich entweder um eine fehlgeschlagene Transformation oder einen Fehler in Ihrem Code handelt.

Versuchen Sie, alle require Aufrufe in Code zu finden, den Sie vor kurzem geändert haben (seit der letzten bekannten guten Version). Wenn Sie die Quellcodeverwaltung verwenden (ich mache mir etwas vor: Ich denke an Git), sollte das ziemlich trivial sein. Wenn Sie die Quellcodeverwaltung nicht verwenden, sollten Sie die Quellcodeverwaltung verwenden.

Wenn Sie neue require Aufrufe finden, die etwas anderes als eine Zeichenfolge an require übergeben (z. B. mehrere Argumente oder sogar Variablen), haben Sie möglicherweise Ihren Schuldigen gefunden.

Wenn das nicht half, sehen Sie, ob Sie irgendwelche Transformationen haben, die in require Anrufe enden können, die geändert werden. Das könnte fast alles sein.

Wenn das auch nicht gut war, versuchen Sie alles auf die neueste Version zu aktualisieren. Abgesehen davon, dass Sie möglicherweise Probleme verursachen, wenn Sie wirklich veraltete Versionen von irgendetwas verwenden, kann dies Ihr Problem beheben. Versuchen Sie, auf die neueste Minor-Version (für Versionen> = 1.0) oder die Bugfix-Version (für die Versionen < 1.0) zu aktualisieren, wenn Sie Kompatibilitätsprobleme vermeiden möchten.

Wenn das immer noch nicht hilft, posten Sie bitte weitere Details und stellen Sie sicher, dass Sie die genauen Unterschiede zwischen dem Code, der "vor ein paar Tagen" funktioniert hat, und dem Code, den Sie jetzt haben, verstanden haben.

4

vielleicht ist es etwas falsch in Ihrer package.json Config, vor allem Pflege verwandelt für die Linie nehmen! ~

"browserify": { 
    "transform": [ 
     [ 
      "reactify", { 
       "harmony": "true" 
      } 
     ] 
    ] 
    } 
+0

Sie haben Recht! Tks –

0

Sie vergessen haben Paket mit NPM zu installieren zu verwandeln. Wenn Sie beispielsweise babelify transform mit browserify verwenden, vergessen Sie möglicherweise, babelify zu installieren.

Verwandte Themen