Отключение анимации перехода

* расширяется оболочкой, а для child_process.spawn аргументы проходят через строки, поэтому они никогда не будут должным образом расширены. Это ограничение spawn. Вместо этого вы можете попробовать child_process.exec, это позволит оболочке правильно расширять любые подстановочные знаки:

var exec = require("child_process").exec;

var child = exec("doSomething ./myfiles/*.csv",function (err,stdout,stderr) {
    // Handle result
});

Если вам действительно нужно использовать spawn по какой-то причине, возможно, вы могли бы рассмотреть возможность расширения шаблона шаблона

Обновить

В базовом коде Joyent Node мы можем наблюдать подход к узлу с lib как node-glob вызывая произвольную команду в оболочке через spawn, сохраняя полное расширение подстановки оболочки:

https://github.com/joyent/node/blob/937e2e351b2450cf1e9c4d8b3e1a4e2a2def58bb/lib/child_process.js# L589

И вот какой-то псевдокод:

var child;
var cmd = "doSomething ./myfiles/*.csv";

if ('win32' === process.platform) {
    child = spawn('cmd.exe', ['/s', '/c', '"' + cmd + '"'],{windowsVerbatimArguments:true} );
} else {
    child = spawn('/bin/sh', ['-c', cmd]);
}

13
задан Birju 15 October 2015 в 11:40
поделиться