加载单独的css样式表(heroku nodejs)

时间:2013-07-07 03:42:25

标签: css node.js heroku

我无法在本地和heroku服务器上为heroku网络应用加载单独的css样式表。我最近从谷歌应用程序引擎迁移,我加载样式表的方式非常好。我在这做错了什么?任何帮助将不胜感激!!这是我的代码:

/app/server.js

var express = require("express");
var app = express();
app.use(express.logger());

var fs = require("fs");
var buf = fs.readFileSync("html/index.html");
var index = buf.toString();

app.get('/', function(request, response) {
    response.send(index);
});

var port = process.env.PORT || 5000;
app.listen(port, function() {
    console.log("Listening on " + port);
});

/app/html/index.html

<!DOCTYPE html>
<html>
  <head>
    <title>Starters Singapore | Social Group Dating</title>
    <link rel="stylesheet" type="text/css" href="../css/index.css">
  </head>

  <body>
    <div id="testdiv">This is a test</div>
  </body>

</html>

/app/css/index.css

body{
    margin:0;
    text-align: left;
    background-color: #666666;
}

#testdiv{
    width: 50%;
    height: 50%;
    background-color: #00a1ec;
}

3 个答案:

答案 0 :(得分:1)

您正在使用css文件的相对路径。此路径相对于服务器根目录而不是html文件。我没有使用Heroku NodeJS的经验,但我认为路径应该是

  

/css/index.css

答案 1 :(得分:0)

我也在Heroku上部署应用程序。我建议用ejs或jade来渲染你的html。我更喜欢ejs。由于您使用的是Express,我还会使用this reference创建一个“公共”目录。 enter image description here

然后在 layout.ejs (对于Express 2.x.x或Express 3.x.x,使用ejs-locals npm)

<!DOCTYPE html>
<html>
  <head>
    <title>The Title</title>
    <% stylesheet('/css/index.css') %>
    <%- stylesheets%>
  </head>
  <body>
  </body>
</html>

您还可以使用 index.ejs 来调用此layout.ejs

<%- layout('layout') %>

在使用带有ejs的布局时,我还建议引用this。学习ejs或玉器起初可能稍微有些烦人,但一旦你理解得更好就会很好。希望这不是一个很重要的答案。

答案 2 :(得分:0)

这对我有所帮助:

var express = require('express');
var app = express();
var server = require('http').createServer(app);

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

假设您已将所有内容放在根文件夹中。例如,我将css文件放在文件夹名称css(位于根文件夹*内)中。然后我可以在我的index.html文件中使用./css/bootstrap.min.css(它也在根文件夹中作为css文件夹的邻居)。

* root文件夹在这里指的是项目根文件夹。