使用节点 child_process 抑制 STDOUT
Suppressing STDOUT with node child_process
我正在运行宁以下代码:
var exec = require('child_process').exec;
var command = "security set-key-partition-list -S apple-tool:,apple: -s -k password /path/to/keychain/login.keychain-db";
exec(serverConfig.securityCall, function (error, stdout, stderr) {
if (error !== null) {
console.log('exec error: ' + error);
console.log('STDERR: ' + stderr);
console.log('STDOUT: ' + stdout);
}
});
我收到错误:exec error: Error: stdout maxBuffer exceeded
。
有没有办法抑制标准输出?我不需要它。
我看到这个 post:Stdout buffer issue using node child_process
所以,我把它改成了 spawn
var spawn = require('child_process').spawn;
var child = spawn('security', ['set-key-partition-list', '-S apple-tool:,apple: -s -k password /path/to/keychain/login.keychain-db'], {stdio:['ignore', 'ignore', 'pipe']});
child.stderr.on('data', function (data) {
console.log('stderr: ' + data);
stderr = 'stderr: ' + data
});
child.on('close', function (code) {
console.log('child process exited with code ' + code);
if (!code) { //0 = success 1= error
console.log("SUCCESS");
} else {
console.log('STDERR: ' + stderr);
}
});
但是我得到这个错误:
stderr: password to unlock default: security: SecKeychainItemSetAccessWithPassword: The user name or passphrase you entered is not correct.
如果我 运行 从命令行运行它,那么我知道我的密码是正确的。 (出于安全目的,密码和钥匙串路径已被编辑)。
我怎样才能让它与 spawn
或 exec
一起工作?
您收到的错误来自您的 security
应用程序,而不是来自 Node。使用 spawn
有一个棘手的部分。每个选项都应该是一个单独的数组元素。
所以这个数组元素应该分成多个元素
'-S apple-tool:,apple: -s -k password /path/to/keychain/login.keychain-db'
类似于
['-S', 'apple-tool:,apple:', '-s', '-k', 'password', '/path/to/keychain/login.keychain-db']
老实说,我不明白为什么文档中没有很好地解释它。
我正在运行宁以下代码:
var exec = require('child_process').exec;
var command = "security set-key-partition-list -S apple-tool:,apple: -s -k password /path/to/keychain/login.keychain-db";
exec(serverConfig.securityCall, function (error, stdout, stderr) {
if (error !== null) {
console.log('exec error: ' + error);
console.log('STDERR: ' + stderr);
console.log('STDOUT: ' + stdout);
}
});
我收到错误:exec error: Error: stdout maxBuffer exceeded
。
有没有办法抑制标准输出?我不需要它。 我看到这个 post:Stdout buffer issue using node child_process
所以,我把它改成了 spawn
var spawn = require('child_process').spawn;
var child = spawn('security', ['set-key-partition-list', '-S apple-tool:,apple: -s -k password /path/to/keychain/login.keychain-db'], {stdio:['ignore', 'ignore', 'pipe']});
child.stderr.on('data', function (data) {
console.log('stderr: ' + data);
stderr = 'stderr: ' + data
});
child.on('close', function (code) {
console.log('child process exited with code ' + code);
if (!code) { //0 = success 1= error
console.log("SUCCESS");
} else {
console.log('STDERR: ' + stderr);
}
});
但是我得到这个错误:
stderr: password to unlock default: security: SecKeychainItemSetAccessWithPassword: The user name or passphrase you entered is not correct.
如果我 运行 从命令行运行它,那么我知道我的密码是正确的。 (出于安全目的,密码和钥匙串路径已被编辑)。
我怎样才能让它与 spawn
或 exec
一起工作?
您收到的错误来自您的 security
应用程序,而不是来自 Node。使用 spawn
有一个棘手的部分。每个选项都应该是一个单独的数组元素。
所以这个数组元素应该分成多个元素
'-S apple-tool:,apple: -s -k password /path/to/keychain/login.keychain-db'
类似于
['-S', 'apple-tool:,apple:', '-s', '-k', 'password', '/path/to/keychain/login.keychain-db']
老实说,我不明白为什么文档中没有很好地解释它。