Как игнорировать ошибку 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 сейчас.
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)
Даже переход к определению
Обновление:
Вопрос, введенный в 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