Pourquoi ne puis-je pas obtenir mes fichiers javascript à partir de Expressjs/Nodejs?

StackOverflow https://stackoverflow.com/questions/8988880

  •  13-11-2019
  •  | 
  •  

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

Était-ce utile?

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>

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top