Openshift Node.js 应用提供 javascript 但不提供 css

Openshift Node.js app serves javascript but not css

我正在 运行使用 Express 创建一个 Node.js 应用程序,但是我无法从我的样式表目录加载 css。我为 css 发出的每个请求都会返回 503 错误。但是,我所有的 javascript 都可以正常加载。我尝试将 css 文件移动到 javascripts 文件夹并更改 html 中的 href,但每次我尝试加载它时,服务器都会崩溃并且节点会重新启动。

我已经通过从我的 index.html 中删除 link 来验证它是 CSS,并且整个网站都可以正常工作,只是没有样式。如果我 运行 本地应用程序 CSS 加载正常,CSS 问题只会发生在已部署的 Openshift 实例上。

应用结构

server.js
node_modules/
public/
  --index.html
  --bower_components/
  --stylesheets/
    --app.css
  --javascripts/
    --app.js

server.js

var express = require('express');
var path = require('path');
var favicon = require('serve-favicon');
var logger = require('morgan');
var cookieParser = require('cookie-parser');
var bodyParser = require('body-parser');
var Promise = require('bluebird');
var http = require('http');

var app = express();

app.use(favicon(__dirname + '/public/favicon.ico'));
app.use(logger('dev'));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(require('node-compass')({mode: 'expanded'}));
app.use(express.static(path.join(__dirname, 'public')));

// catch 404 and forward to error handler
app.use(function(req, res, next) {
    var err = new Error('Not Found');
    err.status = 404;
    next(err);
});

app.use(function(err, req, res, next) {
    res.status(err.status || 500);
    res.render('error', {
        message: err.message,
        error: {}
    });
});

module.exports = app;

var server_port = process.env.OPENSHIFT_NODEJS_PORT || 8080;
var server_ip_address = process.env.OPENSHIFT_NODEJS_IP || '127.0.0.1';

var server = require('http').Server(app);
var io = require('socket.io')(server);

server.listen(server_port, server_ip_address, function() {
    console.log("Listening on " + server_ip_address + ", server_port " + server_port);
});

io.sockets.on('connection', function(socket) {
    socket.emit('message', {'message': 'connected'});
});

require('./routes/weather')(io);

index.html

<!-- Stylesheets -->
<link rel="stylesheet" href="/stylesheets/app.css" type="text/css"/>

node-compass 干扰了提供的 css 并导致抛出错误。注释掉后

// app.use(require('node-compass')({mode: 'expanded'}));

服务器提供 css 很好。