Expressjs没有在heroku上加载样式表,给出500错误

sil*_*son 4 stylus stylesheet node.js express pug

我在heroku上运行Expressjs安装,并没有加载样式表.

我点击了ctrl + u然后点击样式表链接,并收到此错误:

TypeError: Object #<SendStream> has no method 'on'
    at Object.static [as handle] (/app/node_modules/express/node_modules/connect/lib/middleware/static.js:75:8)
    at next (/app/node_modules/express/node_modules/connect/lib/proto.js:190:15)
Run Code Online (Sandbox Code Playgroud)

当我转到网址'/stylesheets/style.css'时,我收到此错误:

Express
500 TypeError: Object #<SendStream> has no method 'on'

    at Object.static [as handle] (/app/node_modules/express/node_modules/connect/lib/middleware/static.js:75:8)
    at next (/app/node_modules/express/node_modules/connect/lib/proto.js:190:15)
    at /app/node_modules/stylus/lib/middleware.js:174:46
    at /app/node_modules/stylus/lib/middleware.js:208:20
Run Code Online (Sandbox Code Playgroud)

一切都在当地很好.

这是package.json

  {
    "name": "app-name",
      "version": "0.0.1",
      "private": true,
      "scripts": {
      "start": "node app"
     },
     "dependencies": {
       "express": "3.0.0rc1",
       "jade": "*",
       "stylus": "*"
     }
   }
Run Code Online (Sandbox Code Playgroud)

app.js:

/**
 * Module dependencies.
 */
 var express = require('express')
  , routes = require('./routes')
  , http = require('http')
  , path = require('path');

var app = express();

app.configure(function(){
  app.set('port', process.env.PORT || 3000);
  app.set('views', __dirname + '/views');
  app.set('view engine', 'jade');
  app.use(express.favicon());
  app.use(express.logger('dev'));
  app.use(express.bodyParser());
  app.use(express.methodOverride());
  app.use(app.router);
  app.use(require('stylus').middleware(__dirname + '/public'));
  app.use(express.static(path.join(__dirname, 'public')));
});

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

app.get('/', routes.index);
app.get('/about', routes.about);

http.createServer(app).listen(app.get('port'), function(){
  console.log("Express server listening on port " + app.get('port'));
});
Run Code Online (Sandbox Code Playgroud)

Procfile:

web: node app.js
Run Code Online (Sandbox Code Playgroud)

如果我一直刷新,它会崩溃应用程序.

sil*_*son 13

我能够通过在package.json中指定引擎依赖项来解决这个问题

{
  "name": "app-name",
  "version": "0.0.1",
  "private": true,
  "scripts": {
    "start": "node app"
  },
  "dependencies": {
    "express": "3.0.0rc1",
    "jade": "*",
    "stylus": "*"
  },
  "engines": {
    "node": "0.8.4",
    "npm": "1.1.41"
  }
}
Run Code Online (Sandbox Code Playgroud)

  • 任何人都可以澄清为什么指定node/npm引擎版本解决了Express中静态内容请求失败的问题?我正在投票,因为它对我有用,但这有点莫名其妙?! (2认同)