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

如何在Node.js终端传入函数参数?Mailchimp脚本传参求助

如何从命令行传入列表ID到你的Mailchimp脚本?

我来帮你一步步实现两种实用方案:先用Node.js内置的process.argv快速搞定基础需求,再用minimist处理更规范的命令行参数场景。


方案1:使用Node.js内置的process.argv(无需额外依赖)

process.argv是Node.js自带的数组,存储了命令行执行时的所有参数:

  • 第0个元素:Node.js可执行文件的路径
  • 第1个元素:当前脚本文件的路径
  • 第2个及以后的元素:你传入的自定义参数

修改后的代码:

var mailchimpMarketing = require("@mailchimp/mailchimp_marketing");

mailchimpMarketing.setConfig({
  apiKey: "MY API KEY",
  server: "MY SERVER",
});

async function getArrayEmailMembersFromMailchimpListID(listID){
  // 先判断用户是否传入了列表ID
  if (!listID) {
    console.error("请传入列表ID!用法:node test.js <你的列表ID>");
    process.exit(1); // 退出脚本并返回错误码,避免后续报错
  }
  
  try {
    const response = await mailchimpMarketing.lists.getListMembersInfo(listID);
    const emailsMailchimp = response.members.map(member => member.email_address);
    console.log(emailsMailchimp);
    return emailsMailchimp;
  } catch (error) {
    console.error("获取成员列表失败:", error.message);
    process.exit(1);
  }
}

// 从命令行参数中提取列表ID:取process.argv的第2个元素
const listID = process.argv[2];
getArrayEmailMembersFromMailchimpListID(listID);

使用方式:

在终端执行:

node test.js MyListID

如果忘记传参数,脚本会直接提示错误并退出,避免后续无意义的API请求。


方案2:使用minimist处理更规范的命令行参数(适合复杂场景)

如果以后你需要传入更多参数(比如API密钥、服务器前缀),minimist可以帮你解析命名参数,让命令行更清晰、可读性更强。

步骤1:安装minimist

npm install minimist

修改后的代码:

var mailchimpMarketing = require("@mailchimp/mailchimp_marketing");
const minimist = require('minimist');

// 解析命令行参数:slice(2)去掉前两个默认参数
const args = minimist(process.argv.slice(2));

mailchimpMarketing.setConfig({
  apiKey: "MY API KEY",
  server: "MY SERVER",
});

async function getArrayEmailMembersFromMailchimpListID(listID){
  if (!listID) {
    console.error("请传入列表ID!用法:node test.js --list-id <你的列表ID> 或 node test.js -l <你的列表ID>");
    process.exit(1);
  }
  
  try {
    const response = await mailchimpMarketing.lists.getListMembersInfo(listID);
    const emailsMailchimp = response.members.map(member => member.email_address);
    console.log(emailsMailchimp);
    return emailsMailchimp;
  } catch (error) {
    console.error("获取成员列表失败:", error.message);
    process.exit(1);
  }
}

// 从解析后的参数中获取列表ID,支持完整参数名和简写
const listID = args['list-id'] || args.l;
getArrayEmailMembersFromMailchimpListID(listID);

使用方式:

你可以用两种方式传入参数:

# 完整参数名,可读性更强
node test.js --list-id MyListID

# 简写形式,更快捷
node test.js -l MyListID

这种方式的优势在于,即使以后添加更多参数(比如--api-key),命令行也不会混乱,维护起来更方便。


额外提示:

  • 记得把代码里的"MY API KEY"和"MY SERVER"替换成你自己的Mailchimp凭据,也可以参考方案2的方式,把这些配置项也改成从命令行传入,彻底避免硬编码。
  • 加入try/catch块可以捕获API请求的错误,让脚本更健壮,不会因为一次请求失败就崩溃。

内容的提问来源于stack exchange,提问作者Samy Rharade

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.09 15:58:11