当运行jshint验证JS代码时,我经常会遇到类似以下错误

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


Cookies来自

//= require js.cookie


哪个是作为Rails资产管道的一部分进行编译的,所以JSHint对此一无所知。

有没有办法设置它,以便JSHint在具有所有依赖项的文件上运行?还是有其他选择?

最佳答案

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

如果以上内容过于繁琐,则可以在通过链轮运行文件后运行jshint,即。运行rake assets:precompile,然后对public/assets中生成的文件运行jshint。

但是我推荐的最佳做法是有所不同:

您应该考虑使用适当的模块系统,而不是使用链轮进行javascript依赖性管理。这将缓解共享全局变量的根本问题(这是公认的不良编程习惯)。

虽然社区提出了不同程度的社区接受度的multiple module systems,但目前最好的选择是接受ES6 modules standard。终于有了标准化的模块化方法是很好的。我最近写了一个简短的guide关于将ES6模块与rails集成。

简而言之,ES6模块标准是当今组织javascript的上乘之选,与诸如AMD,CommonJS或Sprockets指令之类的解决方案相对,后者是在没有模块化javascript标准化解决方案的时代开发的。

关于javascript - 具有Rails Assets 管道的JSHint需要,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34027164/

10-11 05:49