strongloop / loopback

LoopBack makes it easy to build modern applications that require complex integrations.
http://loopback.io
Other
13.23k stars 1.2k forks source link

TypeError: loopback.compress is not a function #4005

Closed mdali602 closed 5 years ago

mdali602 commented 6 years ago
var loopback = require('loopback');
var boot = require('loopback-boot');
var RoutineJob = require('./utils/routineJob');
var bodyParser = require('body-parser');

// report files
var ReportManager   = require('./reports/reportManager');
// var budgetOverview   = require('./reports/budgetOverview');

var customApi = require('./utils/customApi');
var chargifyPayment = require('./chargify/chargify');
var userManager = require('./utils/userManager');

var app = module.exports = loopback();

var path = require('path');
app.use(loopback.static(path.resolve(__dirname, '../client')));

app.use(loopback.compress());
app.use(loopback.token());

app.use(loopback.cookieParser(app.get('cookieSecret')));
app.use(loopback.session({
    secret: '059585756545352515mnbvcxz',
    saveUninitialized: true,
    resave: true
}));

app.use(loopback.context());
app.use(function (req, res, next) {
    if (!req.accessToken) return next();
    var loopbackContext = loopback.getCurrentContext();
    var user = userManager.users[req.accessToken.userId];
    if(user){
      if (loopbackContext) {
          loopbackContext.set('currentUser', user);
          if(req.connection) loopbackContext.set('ip', req.connection.remoteAddress);
        }
      next();
    }else{
      app.models.User.findById(req.accessToken.userId, function(err, user) {
        if (err) return next(err);
        if (!user) return next('Invalid AccessToken!');
        userManager.users[user.id] = user
        if (loopbackContext) loopbackContext.set('currentUser', user);
        next();
      });
    }

});

app.start = function() {
  // start the web server
  return app.listen(function() {
    app.emit('started');
    console.log('Web server listening at : %s', app.get('url'));
  });
};

// Bootstrap the application, configure models, datasources and middleware.
// Sub-apps like REST API are mounted via boot scripts.
boot(app, __dirname, function(err) {
  if (err) throw err;

  // start the server if `$ node server.js`
  if (require.main === module)
    app.start();

  // TAW-105: remove-alert-to-reboot-browswer
  //  if (require.main === module)
  //    var serverStartedTime = (new Date).getTime();
    // app.io = require('socket.io')(app.start());
    // app.io.on('connection', function(socket){
    //  app.io.emit('chat message', {startTime : serverStartedTime});
    // });

    new RoutineJob(app);
    new ReportManager(app);
    new chargifyPayment(app);
    new customApi(app);
});

userManager.cache(app);

The same code was working before, My system get formatted, I setup the whole environment again.

$ node -v
v10.9.0
$ npm -v
6.2.0
charlie-s commented 6 years ago

Sounds like you installed a new version of Loopback than you previously had – see https://loopback.io/doc/en/lb3/Migrating-to-3.0.html#replace-loopback-middleware-getter-properties.

Specifically, changing loopback.compress to require('compression').

bajtos commented 5 years ago

I agree with @charlie-s. As of LoopBack 3.0, we no longer ship middleware like compression.