【问题标题】:Using express, node.js and jade - style.css is not being displayed/found使用express,node.js和jade - style.css没有被显示/找到
【发布时间】:2014-02-25 18:00:25
【问题描述】:

我现在正试图弄清楚如何将 node.js 与翡翠一起使用,但我似乎无法将其拉入 css 样式表。我的 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='/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

我正在让网站正确加载,但样式表没有加载。

【问题讨论】:

  • express.static() 的路径缺少/ -- __dirname + '/public' -- 所以它可能试图在不存在的Apppublic 文件夹中查找文件。 path module 也可以帮助避免这种情况:express.static(path.join(__dirname, 'public'))
  • 我把它改成了:app.use(express.static(path.join(__dirname, 'public')));但是当我进行更改时,我收到“ReferenceError: path is not defined”。
  • 对不起。您必须像 httpexpress 等一样使用 require('path'),因为它不是模块中的 global
  • 好的,添加:path = require('path') 并且它正在运行,但似乎仍然没有包含样式表。

标签: css node.js express pug


【解决方案1】:

你想换行

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

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

【讨论】:

  • 我遇到了同样的问题,这为我解决了这个问题。谢谢@zimkies!
【解决方案2】:
link(rel='stylesheet', href='/stylesheets/style.css')

不应该是href='/css/style.css'吗?

【讨论】:

  • 这并没有提供问题的答案。要批评或要求作者澄清,请在其帖子下方发表评论。
  • 如果原始源代码中存在此拼写错误,这确实提供了问题的答案。
  • 另一方面,它可能不会,文件结构有点混乱。无论如何,在某些情况下你无法真正回答一个问题,你只能猜测根本原因是什么,而这个猜测和任何猜测一样好。
【解决方案3】:

我遇到了同样的问题,对我来说,因为我和你有相同的代码行:

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

我不得不将我的css/ 文件夹移动到public/ 目录中,因为所有公共静态文件都应该在这个目录中。

然后,在我的 Jade 文件中,我使用了这个:

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

这对你有用吗?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-06-08
    • 1970-01-01
    • 1970-01-01
    • 2012-08-07
    • 1970-01-01
    • 2011-11-23
    • 1970-01-01
    • 2023-04-10
    相关资源
    最近更新 更多