如何在Eclipse中忽略节点shebang错误?

Jes*_*ess 22 eclipse jsdt node.js jshint nodeclipse

我正在编写一些节点命令行实用程序.他们都从这条线开始:

#!/usr/bin/env node
Run Code Online (Sandbox Code Playgroud)

使用Eclipse Juno和Nodeclipse Node.js插件,这行代码会产生错误,如下所示:

节点shebang eclipse错误

好的,所以#不是javascript中的有效注释字符,但它是Linux/UNIX中的有效字符,作为文件中第一行的shebang.但是如何设置Eclipse以忽略此错误?这对我来说是一个问题,因为如果您有错误,代码格式化将不起作用.我必须删除该行.点击CTRL-SHIFT-F并添加回来.

我尝试了很多东西并研究过,但我找不到答案.

有一个重复的问题,在hashbang线上eclipse javascript语法错误,但我的问题有更多的信息.

编辑:

看起来有一些东西添加到jshint以允许第一行中的shebangs.也许我需要更新我的node-eclipse,或者node-eclipse项目可能需要更新jshint?

  • 我的jshint eclipse集成版本是0.9.6.
  • 我的nodeclipse是0.4.0.20130519 ......

我升级到了

  • jshint eclipse整合0.9.9.20131029
  • nodeclipse 0.7.0.20131101

这没有用.

这是我在eclipse中的JSHint版本:

在此输入图像描述

编辑2:

感谢VonC的回答.但我认为这表明我的文件中没有BOM.还有其他想法吗?

$ od -N 20 -t x1 hello.js
0000000 23 21 2f 75 73 72 2f 62 69 6e 2f 65 6e 76 20 6e
0000020 6f 64 65 0a
0000024
Run Code Online (Sandbox Code Playgroud)

编辑3:

关于Paul Verest在下面的回答,我试图关闭JSDT验证,但我似乎无法做到这一点.我取消选中"启用JavaScript语义验证"(在Eclipse中,请参阅"窗口">"首选项">"JavaScript">"验证程序">"错误/警告"),但问题仍然存在.

我现在正在卸载Eclipse Web Developer Tools 3.4.2.这似乎没有帮助,现在我的CSS和HTML编辑器已经消失了.现在我已经尝试通过遵循这个SO问题中的一些想法来禁用JSDT验证,如何从我的eclipse项目中删除javascript验证?.

所以我进入了我的项目属性并转到了JavaScript> Validation.我已将所有内容设置为"启用项目特定设置"并取消选中"错误/警告","JSDOC"等.即便如此,我认为验证仍在运行,因为问题仍然存在!我的"Builders"属性仅列出已启用的"JSHint Problem Checker".(我在一个带有hello.js的新测试项目中完成所有这些工作).

编辑4,回答

这并不容易,但我最终在Eclipse中破解了.project文件.我有这个:

<natures>
    <nature>org.nodeclipse.ui.NodeNature</nature>
    <nature>org.eclipse.wst.jsdt.core.jsNature</nature>
</natures>
Run Code Online (Sandbox Code Playgroud)

我删除了jsdt性质,现在shebang线上的错误是GONE!我在我的测试项目和我的真实项目中做到了这一点.有效!这实际上非常有用,因为我可以格式化文件,而我现在实际上正在运行jshint.

Pau*_*est 5

Eclipse中有2个JavaScript验证选项:

  • JSDT
  • JSHint(默认自Nodeclipse 0.7)

由于每个项目存储了配置,因此从使用0.7创建的项目中复制.*设置文件或手动重新配置它(只需将.*文件与新创建的项目进行比较).然后把.jshintrc文件放到 https://github.com/Nodeclipse/nodeclipse-1/blob/master/org.nodeclipse.ui/templates/.jshintrc

如果可能的话,尝试检查JSHint选项.

注意,使用JSHint时,~~这个问题变成了一般的JSHint问题(不是Eclipse或Nodeclipse相关的).~~

更新:

.project 内容自0.7:

<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
    <name>ProjectName</name>
    <comment></comment>
    <projects>
    </projects>
    <buildSpec>
        <buildCommand>
            <name>com.eclipsesource.jshint.ui.builder</name>
            <arguments>
            </arguments>
        </buildCommand>
    </buildSpec>
    <natures>
        <nature>org.nodeclipse.ui.NodeNature</nature>
        <nature>org.eclipse.wst.jsdt.core.jsNature</nature>
    </natures>
</projectDescription>
Run Code Online (Sandbox Code Playgroud)

正如@Jess发现这是JSDT显示的错误,而不是JSHInt,因此删除<nature>org.eclipse.wst.jsdt.core.jsNature</nature>将阻止JSDT显示它(即使自0.7后JavaScript语义验证已经关闭)

更新3:

<nature>org.eclipse.wst.jsdt.core.jsNature</nature>删除的缺点是代码辅助和点击 - 但定义不起作用(实际上,在定义JSDocs的情况下很常见,例如http://www.nodeclipse.org/nodejs/javascript/sources/books/2013/10 /22/JSDT-require-JSDoc.html或1 .js文件内)

JSDoc支持

甚至点击进行定义 点击进入定义