Използване на express, node.js и jade - style.css не се показва/намира

Опитвам се да разбера как да използвам node.js с jade в момента и не мога да го накарам да изтегли css stylesheet. Моят app.js изглежда така:

/* * Module dependencies */ 
var http    = require("http"),
express = require('express') , 
stylus = require('stylus')

//create an app server
var app = module.exports = express.createServer();

app.configure(function(){
  //set path to the views (template) directory
  app.set('views', __dirname + '/views');
  app.set('view engine', 'jade');
  app.use(express.favicon());
  app.use(express.logger('dev'));
  app.use(app.router);
  app.use(express.bodyParser());
  app.use(express.methodOverride());
  app.use(app.router);

  app.use(stylus.middleware({
    debug: true,
    src: __dirname + '/views',
    dest: __dirname + '/public'
  }));  
  app.use(express.static(__dirname + 'public'));
});

app.configure('development', function(){
  app.use(express.errorHandler({ dumpExceptions: true, showStack: true }));
});

app.configure('production', function(){
  app.use(express.errorHandler());
});

//handle GET requests on /
  app.get('/', function(req, res){res.render('index.jade'); 
});
//listen on localhost:3000
app.listen(3000);

Моят файл layout.jade изглежда така:

html
  head
    title= title
    link(rel='stylesheet', href='/bg/stylesheets/style.css')
  body!= body

И моята файлова структура е:

App
  -node_modules
  -public
    -css
      style.css
    -img
    -js
  -views
    -routes
    -stylesheets
      style.styl
    index.jade
    layout.jade
  app.js
  package.json

Уебсайтът се зарежда правилно, но таблицата със стилове не се зарежда.


person Jaclyn Konzelmann    schedule 02.02.2014    source източник
comment
В пътя, даден на express.static(), липсва / -- __dirname + '/public' -- така че вероятно се опитва да търси файлове в папка Apppublic, която не съществува. path модул също може да помогне за избягването на това: express.static(path.join(__dirname, 'public')).   -  person Jonathan Lonowski    schedule 02.02.2014
comment
Промених това на: app.use(express.static(path.join(__dirname, 'public'))); но получавам ReferenceError: пътят не е дефиниран, когато направя тази промяна.   -  person Jaclyn Konzelmann    schedule 02.02.2014
comment
съжалявам Ще трябва да require('path') както сте с http, express и т.н., тъй като не е глобален в модули.   -  person Jonathan Lonowski    schedule 02.02.2014
comment
Добре, добавете: path = require('path') и той работи, но таблицата със стилове все още не изглежда да е включена.   -  person Jaclyn Konzelmann    schedule 02.02.2014


Отговори (3)


Искате да промените линията си

app.use(express.static(__dirname + 'public'));

to

app.use(express.static(__dirname + '/public'));
person zimkies    schedule 02.02.2014
comment
Имах същия проблем и това го поправи за мен. Благодаря @zimkies! - person Cory Klein; 01.07.2014

link(rel='stylesheet', href='/bg/stylesheets/style.css')

не трябва ли да е href='/bg/css/style.css' вместо това?

person alex    schedule 02.02.2014
comment
Това не дава отговор на въпроса. За да критикувате или да поискате разяснение от автор, оставете коментар под неговата публикация. - person Taylan Aydinli; 02.02.2014
comment
Това дава отговор на въпроса дали тази печатна грешка присъства в оригиналния изходен код. - person alex; 02.02.2014
comment
От друга страна, може и да не е, файловата структура е малко объркваща. Както и да е, в някои случаи не можете наистина да отговорите на даден въпрос, можете само да гадаете каква е основната причина, а този е толкова добро предположение, колкото и всяко друго. - person alex; 02.02.2014

Попаднах на същия вид проблем и за мен, тъй като имах същия ред код като вас:

app.use(express.static(__dirname + 'public'));

Трябваше да преместя моята папка css/ в директорията public/, защото всички публични статични файлове трябва да са в тази директория.

След това в моя Jade файл използвах това:

link(rel="stylesheet", href="/bgcss/style.css")

Това работи ли за вас?

person Matheus Eduardo Freitag    schedule 29.08.2017