2015-12-01 78 views
0

当运行jshint验证JS代码,我经常得到这样的错误JSHint与导轨资产管道需要

line 264, col 11, 'Cookies' is not defined. 

Cookie来自

//= require js.cookie 

这是Rails的资产管道的一部分编译,所以JSHint doens不知道。

有没有一种方法来设置它,以便JSHint可以在所有依赖关系就位的文件上运行?或者还有其他的选择吗?

回答

0

您可以考虑使用globals选项使jshint知道共享的全局变量。

如果上面证明过于乏味,那么在通过链轮运行文件之后运行jshint - 即。运行rake assets:precompile,然后在生成的文件public/assets上运行jshint。

但动作我可以推荐,最好的办法是不同的东西:

您应该考虑使用适当的模块系统,而不是使用链轮的JavaScript依赖管理。这将缓解共享全局变量的根本问题(这是一个广为人知的糟糕的编程习惯)。

虽然社区已经提出了multiple module systems与不同级别的社区接受 - 现在最好的选择是拥抱ES6 modules standard。最终有一个标准化的模块化方法是很好的。我最近写了一篇关于将ES6模块与导轨集成的简短文档guide

简而言之,ES6模块标准是今天组织JavaScript的最佳选择,而不是像AMD,CommonJS或Sprockets指令那样的解决方案,这些解决方案是在没有标准化模块化JavaScript解决方案的时代开发的。