如何在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
相关产品推荐
相关产品推荐

