Как игнорировать ошибку node shebang в Eclipse?



Я пишу некоторые утилиты командной строки узла. Все они начинаются со строки:



#!/usr/bin/env node


С затмением Юноны и узлом Nodeclipse.JS plugin, эта строка кода выдает ошибку, как показано:



Узел ошибку притон затмение



ОК, так что # не является допустимым символом комментария в javascript, но это допустимый символ в Linux/UNIX как shebang первой строки в файле. Но как я могу настроить Eclipse, чтобы игнорировать эту ошибку? Это проблема для меня, потому что форматирование кода делает не работает, если у вас есть ошибки. Я должен удалить эту строку. Нажмите CTRL-SHIFT-F и добавьте строку назад.



Я много чего перепробовал и исследовал, но не могу найти ответа.

Есть дублирующий вопрос, синтаксическая ошибка eclipse javascript в строке hashbang, но мой вопрос содержит больше информации.



Правка:



Похоже, что в 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


Это не помогло.



Вот моя версия JSHint в eclipse:



Введите описание изображения здесь



Правка 2:



Спасибо за ответ Вонк. Но я думаю, что это показывает, что у меня нет спецификации в файле. Есть еще идеи?



$ 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


Правка 3:



Что касается ответа пола Вереста ниже, я попытался отключить проверку JSDT, но, похоже, не могу этого сделать. Я снял флажок "Включить семантическую проверку JavaScript" (в Eclipse см. окно > настройки > JavaScript > валидатор > ошибки/предупреждения), но проблема остается.



Сейчас я удаляю Eclipse Web Developer Tools 3.4.2. Это, похоже, не помогло, и теперь мой CSS и HTML-редакторы исчезли. Теперь я попытался отключить проверку JSDT, следуя некоторым идеям в этом вопросе SO, Как удалить проверку javascript из моего проекта eclipse?.



Поэтому я вошел в свойства проекта и перешел к JavaScript > проверка. Я установил все на " Enabled project specific settings "и снял флажки" Errors/Warnings"," JSDOC " и т. д. Тем не менее, я думаю, что проверка все еще выполняется, так как проблема сохраняется! Мои" строители " только свойства список" JSHint Problem Checker", который включен. (Я делаю все это в новом тестовом проекте с приветом.в JS).



ПРАВКА 4, ОТВЕТ



Это было нелегко, но я закончил взломом .файл проекта в Eclipse. У меня было вот что:



<natures>
<nature>org.nodeclipse.ui.NodeNature</nature>
<nature>org.eclipse.wst.jsdt.core.jsNature</nature>
</natures>


Я удалил природу jsdt, и теперь ошибка на линии shebang исчезла! Я сделал это в своем тестовом проекте и в своем реальном проекте. Это сработало! Это на самом деле очень полезно, Так как я могу форматировать файл, и я на самом деле запускаю jshint сейчас.

713   2  

2 ответов:

Существует 2 варианта проверки JavaScript в Eclipse:

  • 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>

Как обнаружил @Jess, это была ошибка, показанная JSDT, а не JSHInt, таким образом, удаление <nature>org.eclipse.wst.jsdt.core.jsNature</nature> остановит отображение JSDT (даже если семантическая проверка JavaScript уже отключена с 0.7)

Обновление 3:

Недостатком <nature>org.eclipse.wst.jsdt.core.jsNature</nature> удаления будет то, что код assist и click-though to definition не будет работать (это действительно работает в редких случаях, когда jsdocs определены, например http://www.nodeclipse.org/nodejs/javascript/sources/books/2013/10/22/JSDT-require-JSDoc.html или в пределах 1 .файл js)

Поддержка JSDoc

Даже переход к определению переход к определению

Обновление:

Вопрос, введенный в nodeclipse, указывает наJSHint issue 66 .
Как замечает пол верест в своем ответе (upvoted), это может быть так же просто, как убедиться, что JSHint проверяет код.
Посколькуcommit 63da9 , JSHint знает, как игнорировать эту директиву shebang.

// If the first line is a shebang (#!), remove it and move on.
// Shebangs are used by Node scripts.
if (lines[0] && lines[0].substr(0, 2) == '#!')
  lines.shift();

Оригинальный ответ

Уверены ли вы, что "# " не является допустимым символом (хотя используется в этом вопросе)?

Дважды проверьте кодировка вашего файла node.js, потому что если это UTF-8 С BOM , то javascript не может быть запущен должным образом.

Смотрите " Чем отличается utf-8 от utf-8 без BOM?", а также статью Википедии о шебанге (раздел "магическое число")

Символы shebang представлены теми же двумя байтами в расширенных кодировках ASCII, включая UTF-8, который обычно используется для сценариев и других текстовых файлов на текущих Unix-подобных системный.
Однако файлы UTF-8 могут начинаться с необязательной метки порядка байтов (BOM); если функция "exec" специально обнаруживает байты 0x23 0x21, то наличие BOM (0xEF 0xBB 0xBF) перед shebang предотвратит выполнение интерпретатора скрипта.
Некоторые авторитетные специалистырекомендуют не использовать метку порядка байтов в POSIX (Unix-подобных) сценариях , по этой причине и для более широкой совместимости и философских соображений.

Comments

    Ничего не найдено.