Node.js获取命令行参数报错:agrs is not defined 问题求助
解决
agrs is not defined错误&正确获取Node.js命令行参数 嘿,这个错误的原因超级直接——变量名拼写错误!你定义的是const args = process.argv;,但后面调用的时候写成了agrs[0],少了个字母r,JavaScript自然找不到这个不存在的agrs变量啦。
第一步:修正拼写错误
先把写错的变量名改过来,把agrs全部替换成args:
var task = require('./task'); const args = process.argv; // 这里把agrs改成args const path = args[0]; console.log("path :" + path); task.start(path);
第二步:(重要)正确获取用户传入的命令行参数
不过这里还要提醒你:process.argv的结构和你可能想的不一样:
process.argv[0]:Node.js可执行文件的绝对路径(比如/usr/local/bin/node)process.argv[1]:当前执行的脚本文件路径(也就是你的app.js)- 真正由用户传入的自定义参数是从
process.argv[2]开始的
比如你运行命令node app.js ./my-target-path,那么:
args[0]= Node的路径args[1]=app.js的路径args[2]=./my-target-path(这才是你要的用户输入参数)
所以如果你的目标是获取用户传入的路径参数,应该写成:
var task = require('./task'); const args = process.argv; // 获取用户传入的第一个命令行参数 const userPath = args[2]; console.log("user path :" + userPath); // 记得判断一下参数是否存在,避免传入空值报错 if (userPath) { task.start(userPath); } else { console.error("请传入目标路径参数!"); }
这样既解决了拼写错误,又能正确拿到用户想要的参数,还加了简单的参数校验,避免无参数时的异常~
内容的提问来源于stack exchange,提问作者ssalc
相关产品推荐
相关产品推荐

