2013-08-25 2 views
0

Когда я пытаюсь сделать что-л, как показано ниже:Node Exec `Тест -e` команда

exec('test -e package.json && npm install', function (err, stdout, stderr) {...}); 

И я получаю сообщение об ошибке, когда файл не существует. Зачем? Как отличить реальную ошибку выполнения от отсутствия файла?

Update:

От человека страницы: тест утилиты вычисляет выражение и, если оно истинно, возвращает статус нулевого (истина) выхода; в противном случае он возвращает 1 (false). Если выражения нет, test также возвращает 1 (false).

Означает ли это, что ошибка - правильное поведение? можно ли проверить файл, а затем выполнить npm install, используя только bash?

+0

Что происходит, когда вы запускаете его непосредственно в bash? –

+0

Ничего, никаких ошибок, если файл не существует. 'npm install' не будет выполняться. – ValeriiVasin

+0

Попробуйте использовать абсолютный путь. Ошибка '' файл не существует'' означает, что файл не существует. Скорее всего, вы работаете в другом каталоге. Итак, да, попробуйте проверить абсолютный путь. Также флагом '' -e'', вероятно, не является то, что вы ищете .. Вы ищете '' -f'' –

ответ

2

При выполнении

test -e package.json && npm install 

и package.json не существует, то test потерпит неудачу, npm не будет выполнять (из-за &&) и все выражение будет считаться несостоявшимся. (Это не должно быть удивительно, если бы это было не так, то вы не могли бы сделать что-то вроде a && b && c или a && b || c.)

Так что, если вы хотите, чтобы все выражение, чтобы вернуть успех, вы должны указать, что:

test -e package.json && npm install || true 
+0

Спасибо за объяснение, что это ожидаемое поведение и как его преодолеть :) – ValeriiVasin

Смежные вопросы