2015-04-07 47 views
1

对于我通过翻译人员写的内容,我提前表示歉意,我对英语很不好。node.js,css验证,w3c禁止我?

我遇到了以下问题:我需要执行验证css文件。为此,我决定使用NPM包w3c-css,首先它的工作,但后来开始给予“连接etimedout”,在研究过程中,我注意到通过浏览器和验证器停止工作。

嗅探器的日志在我的脚本的开始:link(< 10代表:()

我的代码:

gulp.task('css', function() { 
    gulp.src('dev/sass/*.scss') 
    .pipe(through2.obj(function(file, enc, cb){ 
     w3c_css.validate({text: file.contents.toString('utf8')}, function(err, data) { 
     if(err) { 
      // an error happened 
      console.error(err); 
     } else { 
      // validation errors 
      console.log('validation errors', data.errors); 

      // validation warnings 
      console.log('validation warnings', data.warnings); 
     } 

     }); 
     cb(null, file); 
    })) 
    .pipe(gulp.dest('build/')); 
}); 

什么原因是它一定是弄错了,或者我因阻止?过于频繁的请求,它不会改变?也许有一些其他的方式来检查css文件?

THX!

+0

看来,这个软件包不时被设计成运行,就像在测试中一样,不是每次你改变你的文件。你可以检查[另一个W3C验证器的自述文件](https://github.com/thomasdavis/w3cjs) – camolin3

回答

0

来自W3C的CSS验证服务的“About”页:

我能在我这个验证的应用程序?有没有API?
是的,是的。 CSS Validator有一个(RESTful)SOAP接口,它可以很容易地构建应用程序(Web或其他)。 良好的礼仪和恭敬地使用共享资源当然是习惯性的:确保您的应用程序在验证器调用之间休眠(),或者安装并运行您自己的验证器实例

所以是的,似乎你已被禁止。

我不知道如何做一个不定期的呼叫任务。您可能会mount a local version of the CSS Validator webserviceediting the w3c-css package指向您自己的服务器。

0

确保脚本在请求之间至少睡1秒钟。 从manual

注意:如果您希望以编程方式调用验证的文件批 ,请确保您的脚本会在 至少1请求之间的第二睡。 CSS验证服务是一项免费的公共服务,敬请期待。谢谢。

为了验证多个链接,使用async + setTimeout或任何相关办法的要求之间暂停:

'use strict'; 

var async = require('async'); 
var validator = require('w3c-css'); 

var hrefs = [ 
    'http://google.com', 
    'https://developer.mozilla.org', 
    'http://www.microsoft.com/']; 

async.eachSeries(hrefs, function(href, next) { 
    validator.validate(href, function(err, data) { 
    // { process err, data.errors & data.warnings } 

    // sleep for 1.5 seconds between the requests 
    setTimeout(function() { next(err); }, 1500); 
    }); 
}, function(err) { 
    if(err) { 
    console.log('Failed to process an url', err); 
    } else { 
    console.log('All urls have been processed successfully'); 
    } 
}); 

编辑:

为了缓解这个问题: