Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/41.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js nodejs child_process.spawn msdeploy.exe,在dest站点中有空间_Node.js_Space_Child Process_Spawn - Fatal编程技术网

Node.js nodejs child_process.spawn msdeploy.exe,在dest站点中有空间

Node.js nodejs child_process.spawn msdeploy.exe,在dest站点中有空间,node.js,space,child-process,spawn,Node.js,Space,Child Process,Spawn,我正在尝试将child\u process.spawn与msdeploy.exe一起使用,以自动部署IIS中的某些应用程序 每当我的dest站点名称中有一个空格时,就会导致msdeploy崩溃 var command = 'C:/Program Files/IIS/Microsoft Web Deploy V3/msdeploy.exe'; var args = []; args.push('-verb=sync'); args.push('-source:iisApp=C:/Users/PAT

我正在尝试将
child\u process.spawn
与msdeploy.exe一起使用,以自动部署IIS中的某些应用程序

每当我的dest站点名称中有一个空格时,就会导致msdeploy崩溃

var command = 'C:/Program Files/IIS/Microsoft Web Deploy V3/msdeploy.exe';
var args = [];
args.push('-verb=sync');
args.push('-source:iisApp=C:/Users/PATH_TO_DEPLOY/dist');
args.push('-dest:iisApp=Default Web Site/test');

var process = spawn(command,args);

process.stdout.on('data', function(data) { grunt.log.write(data) });
process.stderr.on('data', function(data) { grunt.log.error(data); });
process.on('exit', function(code) {
    if (code !== 0) {
        grunt.fail.warn('Something went wrong');
    }
    done();
});
我尝试过其他一些替代方法,比如put“
”-dest:iisApp=“Default Web Site/test”
,但是msdeploy也给了我一个错误。 此错误类似于:
参数'''-dest:iisApp=默认网站/haha''无法识别。所有参数必须以“-”字符开头

当我试图转义上面的空格char或put“like descripe”时,这给了我一个类似的错误

这是nodejs中的一个bug吗?也许我做错了什么?
谢谢。

如何做到这一点:

var path = require('path');
var platform = require('platform');
var cp = require('child_process');

var full_cmd = '/path/to/dir with space/program.exe';
var cmd = '.' + path.sep + path.basename(full_cmd); // cannot include double quotes -- the work-around is to use the 'cmd_opts.cwd'
var cmd_args = ['"--import-path=/path/to/dir with space/import_file"']; // can wrap each with double-quotes (Windows only -- fails on Unix)
var cmd_opts = {
    cwd: path.dirname(full_cmd),
    encoding: 'utf8'
};
if (platform.os() === 'win32') {
    cmd_opts.windowsVerbatimArguments = true;
}
var proc = cp.spawn(
    cmd,
    cmd_args,
    cmd_opts
);
如果“program.exe”的名称与“program name with space.exe”类似,则此操作将不起作用