我在heroku上运行Expressjs安装,但没有加载样式表。
我点击ctrl+u,然后单击stylesheet链接,得到以下错误:
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)
当我转到url '/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
一切都在本地运行良好。
这是package.json
{
"name": "app-name",
"version": "0.0.1",
"private": true,
"scripts": {
"start": "node app"
},
"dependencies": {
"express": "3.0.0rc1",
"jade": "*",
"stylus": "*"
}
}
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'));
});
Procfile:
web: node app.js
如果我一直刷新,应用程序就会崩溃。
发布于 2012-08-03 04:31:36
我可以通过在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"
}
}
发布于 2012-08-14 10:01:04
我找到答案了!您获得了错误的应用程序推送到云的运行时,您可以这样做
vmc push yourappname --runtime node08
我希望我能帮到你
发布于 2013-01-06 07:35:32
我刚刚遇到了同样的问题,并发现运行以下命令(通过Heroku CLI)对我有效:
heroku配置:添加NODE_ENV=production
这与Silas提到的指定Node和NPM的版本相结合。
(通过http://quickleft.com/blog/getting-started-with-express-in-node)
https://stackoverflow.com/questions/11789216
复制