Twitter的Bootstrap LESS与Node.js&Express

由于Twitter Bootstrap 2已经出来,我想把它集成到我的Node.js项目中。 不幸的是,less编译器有问题,我不能得到它的工作。 我把所有的文件放到公共文件夹中,并build立一个新的项目与express -c less newproj 。 并添加更less的线

 less = require('less'); app.use(express.compiler({ src: __dirname + '/public', enable: ['less'] })); 

所有节点告诉我是:

 Express server listening on port 3000 in development mode undefined 

在客户端,我得到一个500(内部服务器错误)的bootstrap.css文件,应该由lessc编译。

 lessc bootstrap.less 

工作正常。

任何人都知道如何解决这个问题?

对于后人来说,这在最近的快车中已经发生了很大的变化:

 app.use(require('less-middleware')({ src: __dirname + '/public' })); app.use(express.static(path.join(__dirname, 'public'))); // This is just boilerplate you should already have app.use(express.bodyParser()); app.use(express.methodOverride()); app.use(app.router); 

好的,这是我为你find的。 首先你需要编译器和静态中间件。 编译器编译你的更less,并重新编译,静态中间件做css的实际服务

 app.use(express.compiler({ src : __dirname + '/public', enable: ['less']})); app.use(express.static(__dirname + '/public')); 

其次,由于某种原因,编译器运行时丢失了当前的path信息,所以找不到包含。 所以我不得不通过bootstrap.css并将path添加到每个导入。

 @import "/public/stylesheets/reset.less"; 

这显然很奇怪,我将深入挖掘它。

编辑:虽然奇怪,深入查看代码显示我没有简单的方法。 多一点search发现这个拉请求连接回购https://github.com/senchalabs/connect/pull/174提供了一个解决这个,但开发人员似乎并不想要它。

在这个线程中也有一些解决方法,但是最好的办法是绝对path。