Less如何import一个新文件?
发布于 12 年前 作者 romboo 11587 次浏览 最后一次编辑是 8 年前

node.js中用less,想import另一个less,总是报500错误,错误信息为:“500 [object Object]”,node.js的代码如下:

var parser = new(less.Parser)({
	paths: ['./main.less'] // Specify search paths for [@import](/user/import) directives
});

parser.parse(content, function (err, tree) {
	if (err) { return console.error(err) };
	content = tree.toCSS({ compress: true }); // Minify CSS output
	callback(content);
});

经查,在tree.toCSS的时候报错,被引入的文件main.less是一个简单的less文件,只有一个body{}

4 回复
var path = require('path');
var filename = './main.less';
filename = path.join(__dirname, filename);
var parser = new(less.Parser)({
    paths: [path.dirname(filename) ]
    filename : filename

});

感谢 @imzshh 的代码,研究表明,paths需要用绝对路径,filename可以不用,代码如下:

var parser = new(less.Parser)({
	paths: [_path.join(__dirname, "../static/css")]
});

终于搞定了,谢了。

lesscss.net上的代码给的是相对路径,奇怪。示例代码如下:

var parser = new(less.Parser)({
    paths: ['.', './lib'], // Specify search paths for @import directives
    filename: 'style.less' // Specify a filename, for better error messages
});

parser.parse('.class { width: 1 + 1 }', function (e, tree) {
    tree.toCSS({ compress: true }); // Minify CSS output
});

不指定filename的话,那你处理什么东西啊?filename就是less文件的路径。

回到顶部