Less如何import一个新文件?
发布于 2年前 作者 romboo 1244 次浏览

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)](/user/import)](/user/import)](/user/import)](/user/import)](/user/import)](/user/import)](/user/import)](/user/import)](/user/import)](/user/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文件的路径。

回到顶部