2014-06-24 17 views
10

Ho un index.jade nella mia cartella 'views'.Percorso di script per ExpressJS in node_modules

doctype html 
html 
    head 
    title= title 
    link(rel='stylesheet', href='/stylesheets/main.css') 
    script(src='../node_modules/some_package/package_script.min.js') 

ho index.js nei miei percorsi cartella con un router:

router.get('/', function(req, res) { 
    res.render('index', { title: 'title goes here' }) 
}); 

Continuo a ricevere un errore 404 quando provo ad accedere alla cartella node_modules nel file di giada nella console: GET /node_modules/some_package/package_script.min.js 404 1ms - 19b

Come funziona esattamente il percorso dei file/come posso correggerlo per Express quando sto tentando di accedere a uno script in node_modules? Devo copiare i file javascript necessari e metterli nella cartella 'javascripts' sotto 'public' perché funzioni?

Grazie!

+0

Sei sicuro che sia il percorso corretto per il file relativo a 'index.jade'? – Michael

risposta

14

Whoa! Hold on ... node_modules è una directory privata e non deve essere esposta. Per impostazione predefinita, la directory public è il percorso principale del pubblico per i file statici:

app.use(express.static(path.join(__dirname, 'public'))); 

In c'è una directory javascripts. Copiare lo script lì e modificare l'attributo src nel modello a:

/javascripts/package_script.min.js 

Se si voleva davvero servire fino node_modules, che sarebbe una cattiva idea, aggiungere la seguente sotto la linea app.use(express.static(...)); sopra:

app.use(express.static(path.join(__dirname, 'node_modules'))); 
+1

Risposta brillante. Ho avuto la sensazione che ci fosse qualcosa di sbagliato. Grazie per aver chiarito che node_modules è una directory privata, un grande no-no! [Nessuna informazione] (http://stackoverflow.com/questions/24397379/script-path-for-expressjs-in-node-modules) – Bryan

+1

sarebbe bello se questa risposta potesse toccare come si può ottenere il bootstrap- sass file node_modules disponibili per il gulp in modo pulito, ovvero non mi sento veramente a mio agio nel fare una copia una sola volta programmata in un compito di gulp per copiare i file in una cartella src, in modo che possano essere originati dal task gulp su ogni ricompilare, e non penso che dovrei ci si abitua a copiare manualmente i file da node_modules, quindi come posso evitare di usare lamé semplicemente per il middle-man? copiarli manualmente su src/o c'è un modo migliore per accedere a node_modules, o quale api chiama ARE a bootstrap-sass via gulp? – blamb

+0

post correlati, sembra che tutti stiano correndo in questo uso di node_modules da gulp ora http://stackoverflow.com/questions/27464168/how-to-include-scripts-located-inside-the-node-modules-folder – blamb

Problemi correlati