Pourquoi ne puis-je pas obtenir mes fichiers javascript à partir de Expressjs/Nodejs?
Question
Je commence à expérimenter avec nodejs/expressjs/coffeescript et le jade et le moteur d'affichage.
J'ai la configuration suivante qui d'après ce que je peux le voir dans les exemples qui sont autour de semble assez standard.
app = express.createServer().listen process.env.PORT
app.configure ->
app.set 'views', __dirname + '/views'
app.set 'view engine', 'jade'
app.set 'view options', layout: true
app.use express.bodyParser()
app.use express.static(__dirname + '/public')
app.use app.router
app.get '/ekmHoliCal/index', (req, res) ->
res.render 'index'
Mon répertoire de la structure est comme suit:
-- ekmHoliCal
-- public
--javascripts
client.js
-- views
index.jade
layout.jade
Le fichier d'index ne contient rien de mais le la ligne: C'est le fichier d'index
la mise en page.jade fichier contient:
!!! 5
html(lang="en")
head
title Users
script(type="text/javascript", src="http://code.jquery.com/jquery-1.6.4.js")
script(type="text/javascript", src="/ekmholical/javascripts/client.js")
body
div!= body
Lorsque je navigue à localhost/ekmHoliCal/index je me servis de la page index comme prévu.Cependant si j'ai l'affichage de la source, je vois un lien vers jquery :
<script type="text/javascript" src="http://code.jquery.com/jquery-1.6.4.js">
et si je clique sur ce lien, bien sûr que je vois la source du fichier jquery.
L'indice fichier source contient également un lien vers mon client.js fichier comme suit:
<script type="text/javascript" src="/ekmholical/javascripts/simon.js"></script>
mais quand je clique sur que je reçois
Ne peut pas OBTENIR /ekmholical/javascripts/client.js
J'ai vu cette question connexe (Express-js ne peut pas OBTENIR mes fichiers statiques, pourquoi?) et ne peuvent pas voir ce que je fais mal
La solution
Votre balise de script a le mauvais chemin.il devrait être
<script type="text/javascript" src="/javascripts/simon.js"></script>
Dans l'express, vous avez défini les éléments suivants:
app.use express.static(__dirname + '/public')
Qui dit express/nœud que l' public
répertoire doit agir en tant que racine de votre serveur web.Tout ce qu'il peut être référencé par /
, donc si vous avez également un répertoire CSS de là, vous pouvez utiliser /css/styles.css
Autres conseils
Suivi de ce que Paul Armstrong a déclaré, vous pourriez aussi faire cela.
app.use('/public', express.static(__dirname + '/public');
Cela vous permettra de référencer votre fichier JS comme celui-ci:
<script src="/public/javascripts/simon.js"></script>