当运行jshint验证JS代码,我经常得到这样的错误JSHint与导轨资产管道需要
line 264, col 11, 'Cookies' is not defined.
Cookie来自
//= require js.cookie
这是Rails的资产管道的一部分编译,所以JSHint doens不知道。
有没有一种方法来设置它,以便JSHint可以在所有依赖关系就位的文件上运行?或者还有其他的选择吗?
当运行jshint验证JS代码,我经常得到这样的错误JSHint与导轨资产管道需要
line 264, col 11, 'Cookies' is not defined.
Cookie来自
//= require js.cookie
这是Rails的资产管道的一部分编译,所以JSHint doens不知道。
有没有一种方法来设置它,以便JSHint可以在所有依赖关系就位的文件上运行?或者还有其他的选择吗?
您可以考虑使用globals选项使jshint知道共享的全局变量。
如果上面证明过于乏味,那么在通过链轮运行文件之后运行jshint - 即。运行rake assets:precompile
,然后在生成的文件public/assets
上运行jshint。
但动作我可以推荐,最好的办法是不同的东西:
您应该考虑使用适当的模块系统,而不是使用链轮的JavaScript依赖管理。这将缓解共享全局变量的根本问题(这是一个广为人知的糟糕的编程习惯)。
虽然社区已经提出了multiple module systems与不同级别的社区接受 - 现在最好的选择是拥抱ES6 modules standard。最终有一个标准化的模块化方法是很好的。我最近写了一篇关于将ES6模块与导轨集成的简短文档guide。
简而言之,ES6模块标准是今天组织JavaScript的最佳选择,而不是像AMD,CommonJS或Sprockets指令那样的解决方案,这些解决方案是在没有标准化模块化JavaScript解决方案的时代开发的。