2013-11-20 3 views
1

При использовании grunt.util.spawn на win32 с пробелами в пути аргумента cmd он вызывает его, не выходя из пространства. Например мой путь содержит «C: \ Users \ Бук Горн», так что сообщение об ошибке я получаю этоGrunt cmd с пробелами в пути

'C:\Users\Beech' is not a recognized as an internal or external command, 
operable program or batch file 

Однако grunt.file.exists показывает файл есть.

Кроме того, если я оберните CMD аргумент с '"' + cmd '"', grunt.file.exists может найти файл, однако я получаю

Fatal error: spawn ENOENT 

Кто-нибудь решить эту проблему уже с другими плагинами хрюкать?

+0

Ошибка «порождение ENOENT», кажется, вещь, которая случается * много * в Node.js коде (поместите его в Google), в основном, когда отсутствует требуемая двоичная информация для вызова. Наверное, больше путей-с-пространствами-шениганами. Правильно ли работает, когда все пути задействованы без пробелов? – Charles

+0

Хороший вопрос - я тестирую его сегодня вечером, чтобы лучше идентифицировать ошибку. Было просто смущено о том, что grunt.file.exists находит его. – Metalshark

+1

Добавление 'string.replace ('', '\\')' в нужном месте очистило эту ошибку, но теперь stdin/out не работает. Время копать глубже. – Metalshark

ответ

0

Вместо того, чтобы использовать переменную cmd непосредственно, первые управляющие пробелы в пути:

cmd.replace(' ', '\\ ')

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