Gulp任务child_process.spawn卷曲错误

时间:2015-03-21 13:41:12

标签: node.js curl gulp

我正在编写一个Gulp任务,该任务将执行curl请求以将文件上传到API。

以下是从命令行按预期执行的请求:

curl \
  -F "files[strings.pot]=@/path/to/file/i18n/strings.pot" \
  -F "json=true" \
  https://api.crowdin.com/api/project/xxxxxx/update-file?key=yyyyyy

这是我到目前为止所写的任务:

var args = [];
args.push('-F "files[strings.pot]=@/path/to/file/i18n/strings.pot"')
args.push('-F "json=true"');
args.push('https://api.crowdin.com/api/project/'+meta.crowdin.projectIdentifier+'/update-file?key='+meta.crowdin.projectKey);

cp.spawn('curl', args, { stdio: 'inherit' })
 .on('close', function(){
    bundleLogger.end("Crowdin - Did upload POT in");
 })
 .on('exit', function(code){
    console.log('Exit code: '+code);
 });

返回curl: (26) couldn't open file "/path/to/file/i18n/strings.pot"

child_process是否会产生不同的权限或$ PATH或会导致此错误的东西?

1 个答案:

答案 0 :(得分:0)

我已经解决了这个问题。

"files[strings.pot]..."周围的双引号被视为文件名的一部分。这有效:

var args = [];
args.push('-F files[strings.pot]=@/path/to/file/i18n/strings.pot');
args.push('-F json=true');
args.push('https://api.crowdin.com/api/project/'+meta.crowdin.projectIdentifier+'/update-file?key='+meta.crowdin.projectKey);

cp.spawn('curl', args, { stdio: 'inherit' })
 .on('close', function(){
    bundleLogger.end("Crowdin - Did upload POT in");
 })
 .on('exit', function(code){
    console.log('Exit code: '+code);
 });