/ / nodejs child_process.spawn msdeploy.exe dest साइट में स्थान के साथ - node.js, space, child-process, spawn

nodejs child_process.spawn msdeploy.exe dest साइट में स्थान के साथ - node.js, space, child-process, spawn

मैं उपयोग करने की कोशिश कर रहा हूँ child_process.spawn आईआईएस में कुछ अनुप्रयोगों के तैनाती को स्वचालित करने के लिए msdeploy.exe के साथ।

जब भी मेरे पास मेरे भाग साइट नाम में कोई स्थान होता है तो यह 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();
});

मैंने कुछ अन्य विकल्पों की कोशिश की है जैसे " "-dest:iisApp="Default Web Site/test"" लेकिन msdeploy मुझे भी एक त्रुटि देते हैं। यह त्रुटि इस प्रकार है: Argument ""-dest:iisApp=Default Web Site/haha"" not recognized. All arguments must begin with "-" char.

जब मैं स्पेस चार से बचने की कोशिश करता हूं या "ऊपर वर्णित वर्णन की तरह मुझे एक समान त्रुटि देता है।

क्या यह नोडज में एक बग है? शायद मैंने कुछ गलत किया है? धन्यवाद।

उत्तर:

जवाब के लिए 0 № 1

इसे कैसे पूरा करें:

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" को "space.exe के साथ प्रोग्राम नाम" नाम दिया गया है