2013-04-05 61 views
0

我對nodejs和與它相關的一切都很陌生。我正在使用twitter-bootstrap框架和節點js。我跑到下面的命令 -使用lessjs和express 3

npm install -g twitter-bootstrap-node 
twitter-bootstrap create myproject 

這是用快遞默認值爲2,所以我升級到表達3.從那時起我收到以下錯誤,當我開始express-

$ node app 
Warning: express.createServer() is deprecated, express 
applications no longer inherit from http.Server, 
please use: 

    var express = require("express"); 
    var app = express(); 


/Users/tusharmathur/Pebbles/app.js:17 
    app.use(express.compiler({ 
       ^
TypeError: Object function createApplication() { 
    var app = connect(); 
    utils.merge(app, proto); 
    app.request = { __proto__: req }; 
    app.response = { __proto__: res }; 
    app.init(); 
    return app; 
} has no method 'compiler' 
    at Function.app.configure.app.use.express.errorHandler.dumpExceptions (/Users/tusharmathur/Pebbles/app.js:17:19) 
    at Function.app.configure (/Users/tusharmathur/Pebbles/node_modules/express/lib/application.js:395:61) 
    at Object.<anonymous> (/Users/tusharmathur/Pebbles/app.js:12:5) 
    at Module._compile (module.js:456:26) 
    at Object.Module._extensions..js (module.js:474:10) 
    at Module.load (module.js:356:32) 
    at Function.Module._load (module.js:312:12) 
    at Function.Module.runMain (module.js:497:10) 
    at startup (node.js:119:16) 
    at node.js:903:3 

這裏是我的app.js文件

/** 
* Module dependencies. 
*/ 

var express = require('express'), 
    routes = require('./routes'); 

var app = module.exports = express.createServer(); 

// Configuration 

app.configure(function() { 
    app.set('views', __dirname + '/views'); 
    app.set('view engine', 'jade'); 
    app.use(express.bodyParser()); 
    app.use(express.methodOverride()); 
    app.use(express.compiler({ 
    src: __dirname + '/public', 
    enable: ['less'] 
    })); 
    app.use(app.router); 
    app.use(express.static(__dirname + '/public')); 

}); 

app.configure('development', function() { 
    app.use(express.errorHandler({ 
    dumpExceptions: true, 
    showStack: true 
    })); 
}); 

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

// Compatible 

// Now less files with @import 'whatever.less' will work(https://github.com/senchalabs/connect/pull/174) 
var TWITTER_BOOTSTRAP_PATH = './vendor/twitter/bootstrap/less'; 
express.compiler.compilers.less.compile = function(str, fn) { 
    try { 
    var less = require('less'); 
    var parser = new less.Parser({ 
     paths: [TWITTER_BOOTSTRAP_PATH] 
    }); 
    parser.parse(str, function(err, root) { 
     fn(err, root.toCSS()); 
    }); 
    } catch (err) { 
    fn(err); 
    } 
} 

// Routes 

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

app.listen(3000, function() { 
    console.log("Express server listening on port %d in %s mode", app.address().port, app.settings.env); 
}); 

回答

1

正如消息所述,Express沒有此編譯器消息了。你應該使用另一箇中間件,它可以讓你創建更少的文件。一個例子是less.js-middleware

安裝後(npm install less-middleware),你可以使用它作爲演示文檔中:

var lessMiddleware = require('less-middleware');  
var app = express.createServer(); 

app.configure(function() {  
    app.use(lessMiddleware({ 
     src: __dirname + '/public', 
     compress: true 
    })); 
}); 
+0

感謝您的聯繫! – Tushar 2013-04-05 17:31:55