Heroku,node.js,服务器崩溃与错误:大多数中间件(如记录器)不再与Express捆绑在一起,必须单独安装 [英] Heroku, node.js, server crash with Error: Most middleware (like logger) is no longer bundled with Express and must be installed separately

查看:124
本文介绍了Heroku,node.js,服务器崩溃与错误:大多数中间件(如记录器)不再与Express捆绑在一起,必须单独安装的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我尝试将我的应用程序部署到heroku服务中,但在推送文件后,日志会给我这个错误:
错误:大多数中间件(如记录器)不再与Express捆绑在一起,必须单独安装。 / p>

我的package.json是

  {
依赖关系:{
connect:3.0.0-rc.2,
express:^ 4.1.1,
express-logger:0.0.2 ,
gzippo:^ 0.2.0,
logfmt:^ 1.1.2
},
devDependencies:{
connect:3.0.0-rc.2,
grunt:〜0.4.1,
grunt-autoprefixer:〜0.4.0,
grunt-bower-install:〜1.0.0,
grunt-concurrent:〜0.5.0,
grunt-contrib-clean:〜0.5.0 ,
grunt-contrib-compass:〜0.7.2,
grunt-contrib-concat:〜0.3.0,
grunt-contrib-connect :〜0.5.0,
grunt-contrib-copy:〜0.4.1,
grunt-contrib-cssmin:〜0.7.0,
咕噜-的contrib-htmlmin: 〜0.1.3
grunt-contrib-imagemin:〜0.3.0,
grunt-contrib-jshint:〜0.7.1,
grunt-contrib-uglify: 〜0.2.0,
grunt-contrib-watch:〜0.5.2,
grunt-google-cdn:〜0.2.0,
grunt-karma:^ 0.8.3,
grunt-newer:〜0.6.1,
grunt-ngmin:〜0.0.2,
grunt-rev:〜0.1.0,
grunt-svgmin:〜0.2.0,
grunt-usemin:〜2.0.0,
jshint-stylish:〜0.1.3,
karma:^ 0.12.14,
karma-jasmine:^ 0.1.5,
karma-ng-html2js-preprocessor:^ 0.1.0,
karma-ng-scenario:^ 0.1.0,
load-grunt-tasks: 0.4.0,
time-grunt:〜0.2.1
},
engines:{
node:> = 0.10。 0

name:eversnap,
scripts:{
test:grunt test
},
version:0.0.1
}


解决方案

  // package。 json(Express 4)
...
依赖关系:{
express:〜4.0.0,
morgan:〜1.0.0 ,
body-parser:〜1.0.0,
method-override:〜1.0.0
}
...

示例代码(详情请参阅文档):

  // server.js(Express 4)
var express = require('express');
var morgan = require('morgan');
var bodyParser = require('body-parser');
var methodOverride = require('method-override');
var app = express();





  //替换您的Express 3代码,从
//
// app.use(express.logger('dev'));
// app.use(express.bodyParser());
// app.use(express.methodOverride());
//
//至:
app.use(morgan('dev')); //将每个请求记录到控制台
app.use(bodyParser()); //从POST中的html中获取信息
app.use(methodOverride()); //模拟DELETE和PUT
app.listen(8080);

另一种选择是将package.json中的express版本更改为使用Express 3 。


express:〜3.0.0


I try to deploy my app into heroku service, but after push the files the log give me this error: Error: Most middleware (like logger) is no longer bundled with Express and must be installed separately.

My package.json is

{
   "dependencies":{
      "connect":"3.0.0-rc.2",
      "express":"^4.1.1",
      "express-logger":"0.0.2",
      "gzippo":"^0.2.0",
      "logfmt":"^1.1.2"
   },
   "devDependencies":{
      "connect":"3.0.0-rc.2",
      "grunt":"~0.4.1",
      "grunt-autoprefixer":"~0.4.0",
      "grunt-bower-install":"~1.0.0",
      "grunt-concurrent":"~0.5.0",
      "grunt-contrib-clean":"~0.5.0",
      "grunt-contrib-compass":"~0.7.2",
      "grunt-contrib-concat":"~0.3.0",
      "grunt-contrib-connect":"~0.5.0",
      "grunt-contrib-copy":"~0.4.1",
      "grunt-contrib-cssmin":"~0.7.0",
      "grunt-contrib-htmlmin":"~0.1.3",
      "grunt-contrib-imagemin":"~0.3.0",
      "grunt-contrib-jshint":"~0.7.1",
      "grunt-contrib-uglify":"~0.2.0",
      "grunt-contrib-watch":"~0.5.2",
      "grunt-google-cdn":"~0.2.0",
      "grunt-karma":"^0.8.3",
      "grunt-newer":"~0.6.1",
      "grunt-ngmin":"~0.0.2",
      "grunt-rev":"~0.1.0",
      "grunt-svgmin":"~0.2.0",
      "grunt-usemin":"~2.0.0",
      "jshint-stylish":"~0.1.3",
      "karma":"^0.12.14",
      "karma-jasmine":"^0.1.5",
      "karma-ng-html2js-preprocessor":"^0.1.0",
      "karma-ng-scenario":"^0.1.0",
      "load-grunt-tasks":"~0.4.0",
      "time-grunt":"~0.2.1"
   },
   "engines":{
      "node":">=0.10.0"
   },
   "name":"eversnap",
   "scripts":{
      "test":"grunt test"
   },
   "version":"0.0.1"
}

解决方案

It looks like Express 4 is upgraded from Express 3 but the json (and maybe code too) is not.

// package.json (Express 4)
...
  "dependencies": {
    "express": "~4.0.0",
    "morgan": "~1.0.0",
    "body-parser": "~1.0.0",
    "method-override": "~1.0.0"
  }
...

sample code (refer to documentation for full details):

// server.js (Express 4)
var express        = require('express');
var morgan         = require('morgan');
var bodyParser     = require('body-parser');
var methodOverride = require('method-override');
var app            = express();

// Replace your Express 3 code, from
//
// app.use(express.logger('dev'));                 
// app.use(express.bodyParser());
// app.use(express.methodOverride()); 
//
// to:
app.use(morgan('dev')); // log every request to the console
app.use(bodyParser()); // pull information from html in POST
app.use(methodOverride());  // simulate DELETE and PUT
app.listen(8080);

Another option is to change the version of express in your package.json to use Express 3 instead, ie.

"express": "~3.0.0"

这篇关于Heroku,node.js,服务器崩溃与错误:大多数中间件(如记录器)不再与Express捆绑在一起,必须单独安装的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆