Подтвердить что ты не робот

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

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

#!/usr/bin/env node

С Eclipse Juno и плагином Nodeclipse Node.js эта строка кода выдает ошибку, как показано:

Node shebang eclipse error

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

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

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

EDIT:

Похоже, было что-то добавлено в jshint, чтобы позволить shebangs в первой строке. Возможно, мне нужно обновить свой node -eclipse, или, возможно, проект node -eclipse должен обновить jshint?

  • Интеграция jclint eclipse - это версия 0.9.6.
  • My nodeclipse - 0.4.0.20130519...

Я обновился до

  • интеграция jshint eclipse 0.9.9.20131029
  • nodeclipse 0.7.0.20131101

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

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

enter image description here

ИЗМЕНИТЬ 2:

Спасибо за ответ VonC. Но я думаю, что это показывает, что у меня нет спецификации в файле. Любые другие идеи?

$ 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 > Validation. Я настроил все на "Включенные конкретные настройки проекта" и снял флажки "Ошибки/Предупреждения", "JSDOC" и т.д. Несмотря на это, я думаю, что проверка продолжается, так как проблема сохраняется! Мои свойства "Строители" содержат только список "Контроллер проблем JSHint", который включен. (Я делаю все это в новом тестовом проекте с hello.js).

РЕДАКТИРОВАТЬ 4, ОТВЕТ

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

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

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

4b9b3361

Ответ 1

В 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). ~~

UPDATE:

.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> удалено будет то, что поддержка кода и щелчок, хотя определение не будет работать (оно действительно работает в редких случаях, когда JSDocs определены, например http://www.nodeclipse.org/nodejs/javascript/sources/books/2013/10/22/JSDT-require-JSDoc.html или в файле .js)

JSDoc support

Даже щелчок по определению click-through to definition

Ответ 2

Обновление:

Проблема, введенная в nodeclipse, указывает на JSHint issue 66.
Как Paul Verest замечает в свой ответ (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 с спецификацией, то javascript не может" t запускаться должным образом.

См. "Чем отличается от utf-8 и utf-8 без спецификации?, а статья в википедии о shebang (раздел" Магический номер ")

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