2014-12-26 11 views
11

Questo è il mio primo giorno in cui faccio il nodo, sto riscontrando qualche problema nel tentativo di raggruppare alcuni file js.Browserify non riesce a trovare il modulo quando si tenta di raggruppare molti file js

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

Questo è il contenuto del file js voglio comprimere in statica/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; 

Quando eseguo browserify -r ./app/main:app > static/bundle.js le bundle.js file viene creato con gli script di app/principale. js. Funziona come previsto.

Ma quando ho eseguito browserify -r ./app/collections/movies.js:movies \ -r ./app/models/movie.js:movie > static/bundle.js, crea un bundle.js vuoti e lo dimostra:

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

cartella My app/node_modules è sincronizzato con ln -sf ../models . e ln -sf ../collections .

Domanda 1: Qualsiasi suggerimento quello che ho sto sbagliando?
Domanda 2: Se static/bundle.js esiste. L'esecuzione di browserify sovrascrive nuovamente il file o no? Sui miei test locali non sovrascrive, quindi dovrei cancellare questo file ogni volta per l'aggiornamento?

risposta

7

Per le persone provenienti dai motori di ricerca:

Potrebbe essere che si sta utilizzando un Mac e non avere usato caso corretto mentre richiede il file.

Questo equivale a mac:

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

Ma non in CentOS per esempio.

+2

Grazie per questo. Questo è il motivo per cui l'importazione di un pacchetto con una lettera maiuscola sbagliata stava funzionando sulla mia macchina di sviluppo OS X ma non sul mio server Linux. – SamHH

0

Se si utilizza il debugger e si passa alla chiamata require, ci si troverà all'interno di un codice minisito (in genere).

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

Vai alla tua console e ispezionare t[o][1]

Questo ti mostrerà un elenco dei percorsi corretti per i moduli.

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

Se questo diventa troppo confuso temporaneamente non-minify la prima riga nel file di compilato bundle.js (io uso alt-cmd-l in PhpStorm) e riprovare.