简体   繁体   English

运行NodeJS时出错

[英]Error Running NodeJS

I am new to NodeJS and I can't not run the old project. 我是NodeJS的新手,我无法运行旧项目。 Here is error message... 这是错误消息...

Error: Most middleware (like compress) is no longer bundled with Express and must be installed separately. 错误:大多数中间件(例如compress)不再与Express捆绑在一起,必须单独安装。 Please see https://github.com/senchalabs/connect#middleware . 请参阅https://github.com/senchalabs/connect#middleware

And Here is code of server.js 这是server.js的代码

/*** Module dependencies.*/
/*jshint loopfunc: true */
var express = require('express'),
    fs = require('fs'),
    passport = require('passport'),
    logger = require('mean-logger');

//Load configurations

var env = process.env.NODE_ENV = process.env.NODE_ENV || 'development',
    config = require('./config/config'),
    auth = require('./config/middlewares/authorization'),
    mongoose = require('mongoose');

//Bootstrap db connection
var db = mongoose.connect(config.db);
var register_models = require('./app/register_models');
register_models();


//Bootstrap models
var models_path = __dirname + '/app/models';
var walk = function(path) {
    fs.readdirSync(path).forEach(function(file) {
        var newPath = path + '/' + file;
        var stat = fs.statSync(newPath);
        if (stat.isFile()) {
            if (/(.*)\.(js|coffee)/.test(file)) {
                require(newPath);
            }
        } else if (stat.isDirectory()) {
            walk(newPath);
        }
    });
};
walk(models_path);

//bootstrap passport config
require('./config/passport')(passport);


var app = express();


//express settings
require('./config/express')(app, passport, db);

//Bootstrap routes
require('./config/routes')(app, passport, auth);

//Start the app by listening on <port>
var port = process.env.PORT || config.port;
app.listen(port);
console.log('Express app started on port ' + port);

//Initializing logger
logger.init(app, passport, mongoose);

//expose app
exports = module.exports = app;

It's because of express 4.xx, If your run npm install command and package.json in your project folder has a dependency like "express": "^4.10.6" or "express": "*", which in turn will install latest version of express. 这是因为express 4.xx,如果您在项目文件夹中运行npm install命令和package.json具有类似“ express”:“ ^ 4.10.6”或“ express”:“ *”之类的依赖关系,则会依次安装最新版本的快递。 It (express 4.xx) will not let your old app (written in express 3.xx or < version) run. 它(express 4.xx)不会让您的旧应用(用express 3.xx或<版本编写)运行。

This problem can be solved by either installing express < 4.xx for example: 例如,可以通过安装express <4.xx来解决此问题:

npm install express@3.x.x

or by installing each missing module that logged in node console (exactly like your above mentioned missings) 或通过安装登录到节点控制台的每个缺少的模块(与上述缺失完全相同)

or here is nice article to follow migration from express 3.xx to 4.xx 或者这是一篇不错的文章,以跟随从Express 3.xx到4.xx的迁移

Migration Article 迁移文章

Happy Helping! 快乐的帮助!

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM