在Node中使用process.argv时,对象类型是String的名称而不是String本身

时间:2014-03-04 23:30:50

标签: javascript node.js javascript-objects

我正在使用Node,我正在尝试使用通过命令行传入的参数作为字符串。我目前的代码是:

if (process.argv.length > 2) {
        var domain = process.argv[DOMAIN_ARGV];
        if (domain != null) {
            checkdomain(domain);
        }

然后我使用checkDomain(domain)从域中删除前缀:

// Strip off http, https, and www from domains
domain = domain.replaceAll("(http://|http://www\\.|https://|https://www\\.|www\\.)", "");

但是,域名不会被视为字符串。相反,域的类型是String本身的值。如果我将example.com作为我的域名传递,我会得到:

user@ubuntu-laptop:~/src$ node lookup.js example.com

/home/user/src/lookup.js:29
    domain = domain.replaceAll(
                          ^
TypeError: Object example.com has no method 'replaceAll'
    at checkdomain (/home/user/src/lookup.js:29:24)
    at lookup (/home/user/src/lookup.js:19:4)
    at Object.<anonymous> (/home/user/src/lookup.js:63:2)
    at Module._compile (module.js:456:26)
    at Object.Module._extensions..js (module.js:474:10)
    at Module.load (module.js:356:32)
    at Function.Module._load (module.js:312:12)
    at Function.Module.runMain (module.js:497:10)
    at startup (node.js:119:16)
    at node.js:902:3

类型应该是String,而不是example.com(或者传入的任何其他参数)。有谁知道这个问题的解决方案?

2 个答案:

答案 0 :(得分:3)

您不想使用replace方法吗?如果我尝试在字符串上调用replaceAll,我会得到同样的错误。它不是字符串对象的方法。

答案 1 :(得分:3)

错误消息不显示类型,但toString()结果,所以一切都正确。字符串没有replaceAll方法。