簡體   English   中英

如何使用Node的child_process.spawn將文件作為輸入?

[英]How do you use a file as input with Node's child_process.spawn?

在我的gulpfile.js我有這個spawn() ,它觸發了一個mysqldump

let mysqldump = spawn('mysqldump', [
  '-v',
  '-u',
  'my_db_name',
  '--password=' + process.env.MY_PRODUCTION_PASSWORD,
  '-h',
  'my_domain.com',
  'my_db_name',
  '< ' + dump_filename
], {
  stdio: 'inherit'
});

雖然我收到有關最后一部分的錯誤消息。 它說Couldn't find table: "< Development-dump.sql" ,這使我相信最后一行沒有使用轉儲文件作為輸入。 如何spawn使用文件作為這樣的輸入?

發生此錯誤是因為spawn命令無法解析輸入。 您需要將轉儲文件寫入spawn命令的input流:

// Define the spawned process without the input
let mysqldump = spawn('mysqldump', [
  '-v',
  '-u',
  'my_db_name',
  '--password=' + process.env.MY_PRODUCTION_PASSWORD,
  '-h',
  'my_domain.com',
  'my_db_name'
]);

// Write the dump file to the input stream.
mysqldump.stdin.write(//path to dump file);
mysqldump.stdin.end();

您似乎想使用<重定向標准輸入,以下代碼可能有效。

let mysqldump = spawn([
  'mysqldump',
  '-v',
  '-u',
  'my_db_name',
  '--password=' + process.env.MY_PRODUCTION_PASSWORD,
  '-h',
  'my_domain.com',
  'my_db_name',
  '< ' + dump_filename
].join(' '), {
  stdio: 'inherit',
  shell: true
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM