2014-12-26 7 views
11

Das ist mein erster Tag, der Knoten tut, habe ich einige Probleme, die versuchen, einige js Dateien zu bündeln.Browserify kann Modul nicht finden, wenn versucht wird, viele js Dateien zu bündeln

MyFolder 
|-- app (folder) 
| |-- Collections (contains: movies.js) 
| |-- Models (contains: movie.js) 
| |-- node_modules 
|-- main.js 
|-- node_modules (folder)  
|-- static (folder) 

Dies ist der Inhalt von js-Dateien, die ich in statische komprimieren möchten/bundle.js

// app/models/movie.js 
var Backbone = require("backbone"); 
var Movie = Backbone.Model.extend({ 
    defaults: { 
    title: "default", 
    year: 0, 
    description: "empty", 
    selected: false 
    } 
}); 
module.exports = Movie; 

// app/collections/movies.js 
var Backbone = require("backbone"); 
var Movie = require('models/movie'); 
var Movies = Backbone.Collection.extend({ 
     model: Movie 
}); 
module.exports = Movies; 

Wenn ich browserify -r ./app/main:app > static/bundle.js die Datei bundle.js ausgeführt wird mit den Skripten von app/main erstellt. js. Es funktioniert wie erwartet.

Aber wenn ich browserify -r ./app/collections/movies.js:movies \ -r ./app/models/movie.js:movie > static/bundle.js ausführen, erstellt es eine leere bundle.js und zeigt dies:

Error: Cannot find module '/Users/MyFolder/app/models/movie.js:movie' from '/Users/MyFolder' 

Mein Ordner app/node_modules ist synchron mit ln -sf ../models . und ln -sf ../collections .

Frage 1: Jeder Hinweis, was ich mache ich falsch?
Frage 2: Wenn static/bundle.js existiert. Wird beim Ausführen von browserify die Datei erneut überschrieben oder nicht? Auf meinen lokalen Tests überschreibt es nicht, also soll ich diese Datei jedes Mal für das Update löschen?

Antwort

7

Für Menschen, von Suchmaschinen kommen:

Es könnte sein, dass Sie einen Mac verwenden, und Sie haben nicht verwendet richtigen Fall, während die Datei benötigt wird.

Dies entspricht in mac:

require('./someFile'); 
require('./somefile'); 

Aber nicht in CentOS zum Beispiel.

+2

Danke dafür. Aus diesem Grund funktionierte das Importieren eines Pakets mit einem falschen Großbuchstaben auf meinem OS X-Dev-Computer, aber nicht auf meinem Linux-Server. – SamHH

0

Wenn Sie Ihren Debugger verwenden und in den require-Aufruf wechseln, befinden Sie sich in einem (typischerweise) vereinheitlichten Code.

(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require== ... 

an die Konsole gehen und t[o][1]

Dies wird Ihnen zeigen, eine Liste der richtigen Pfade für Ihre Module inspizieren.

Object { 
    '<module name>' : <id> 
    ... 
} 

Wenn dies zu wird verwirrend vorübergehend un-minify die erste Zeile in der kompilierten bundle.js Datei (ich verwende alt-cmd-l in PhpStorm) und versuchen Sie es erneut.

Verwandte Themen