You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Node.js调用child_process执行aws s3 cp文件名带括号报错如何解决?

报错根因

child_process.spawn的数组传参默认不会经过shell解析,你手动给路径参数包裹双引号后,双引号会被作为路径的一部分传递给aws cli,导致cli无法识别合法的路径格式,所以抛出Invalid argument type报错。

解决方法

如果你的SpawnTimeout封装的spawn没有开启shell: true(spawn默认不开启shell),直接去掉参数中手动添加的双引号即可:

import { spawn, ChildProcess } from 'child_process';
/// 部分逻辑省略

const s3Cp = (source: string, target: string) => {
  logger.info(`starting s3 sync. source : ${source}, target ${target}`);
  // 直接传递原始source、target,不需要额外包裹引号
  const childProcess = new SpawnTimeout('aws', ['s3', 'cp', source, target, '--only-show-errors'], S3_SYNC_TIMEOUT, 's3 sync');
  return childProcess.exec();
};

这种场景下,文件名里的括号、空格等特殊字符会被原样传递给aws cli,不需要额外转义,不会出现解析错误。

如果你的SpawnTimeout封装逻辑强制开启了shell: true,优先关闭shell配置即可,如果因业务逻辑必须保留shell开启的配置,可以使用转义库对路径参数做转义处理,不要手动添加引号。

内容的提问来源于stack exchange,提问作者David Faizulaev

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 18:45:04