JSLint 错误:“预期在 EOF 处换行”,与 Beautify 插件冲突

Posted

技术标签:

【中文标题】JSLint 错误:“预期在 EOF 处换行”,与 Beautify 插件冲突【英文标题】:JSLint error: "Expected a newline at EOF", conflict with Beautify plugin 【发布时间】:2015-09-07 14:52:05 【问题描述】:

我在使用 Grunt 构建源代码时遇到问题,使用 JSLint 任务进行错误检查:

L177:文件末尾应有换行符。 警告:格式检查失败。使用 --force 继续。 由于警告而中止。

问题很明显,但我还使用来自https://github.com/drewhamlett/brackets-beautify 的括号美化插件,默认情况下会从文件末尾删除所有新行。

我在Gruntfile.js 中对 JSLint 任务的配置:

jslint: 
            server: 
                src: [
                    '<%= config.PATH %>/src/**/*.js',
                ],
                directives: 
                    indent: 4,
                    plusplus: true,
                    unparam: true,
                    todo: true,
                    globals: [
                        'angular'
                    ]
                ,
                options: 
                    edition: 'latest', // specify an edition of jslint or use 'dir/mycustom-jslint.js' for own path
                    errorsOnly: true, // only display errors
                    failOnError: true // defaults to true
                
            
        

我的问题是,如何更改 Gruntfile.js 中的 JSLint 配置以忽略 EOF 处的换行符或强制美化插件在文件末尾添加(或干脆不删除)新行?

【问题讨论】:

有没有换行符为什么对你很重要? @dandavis 因为否则他会出错? lint 为编码人员提供建议。如果您知道它在说什么,那么忽略该建议是安全的。编码以通过自动化工作流程中的每一个小棉绒并不是真正的预期用途......也就是说,尝试放松凌乱的空白选项。 @dandavis 我想你不了解情况。 OP 正在尝试构建一个使用 grunt 的项目。其中一项任务是使用 JSLint 对文件进行 linting。 OP 知道这些只是提示,但构建仍然中止,因为 JSLint 是强硬派。 OP 现在想知道如何在不完全禁用 JSLint 的情况下防止 JSLint 由于缺少换行符而中止构建。 @Siguza 感谢您对其他人的澄清。这正是我正在寻找的问题的答案。 【参考方案1】:

根据Brackets Beautify Documentation,它在内部使用JS-Beautify。后者的文档提到了这些参数:

-n, --end-with-newline
-p, --preserve-newlines

如果您可以强制 Adob​​e Brackets 将参数传递给 js-beautify 调用,我想其中一个应该可以解决问题。

更新

根据 Github repo,brackets beautify 在内部使用 settings.json 进行配置。添加

"end_with_newline": true

可能比破解命令行调用更容易。

第二次更新

如果我正确理解README,扩展只是一个文件夹,所以应该可以:

找到扩展文件夹:菜单“帮助 > 显示扩展文件夹” 找到 Beautify 插件的子文件夹 更改插件文件夹内的 settings.json (可能)重新启动 Adob​​e Brackets

【讨论】:

我喜欢您的更新答案,但您能否提供更多信息如何更改 settings.json 文件?在哪里可以找到并添加这一行? 查看我的更新答案(我不使用 Adob​​e Brackets,因此请谨慎对待此信息) 非常好,它按预期工作。需要重新启动括号。我接受你的回答。谢谢。

以上是关于JSLint 错误:“预期在 EOF 处换行”,与 Beautify 插件冲突的主要内容,如果未能解决你的问题,请参考以下文章

jslint 与 Visual Studio Cordova 工具不兼容?

JsLint'超出范围'错误

JSLint 错误:意外的“这个”

JSLint 中出现意外的“=”错误

禁止显示“预期为 '===' 而看到的是 '=='。” jslint中的错误

JSLint 未使用的变量错误