【问题标题】:Object type is the name of the String rather than the String itself when working with process.argv in Node在 Node 中使用 process.argv 时,对象类型是字符串的名称而不是字符串本身
【发布时间】:2014-03-04 23:30:50
【问题描述】:

我正在使用 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\\.)", "");

但是,域不被视为字符串。相反,域的类型是字符串本身的值。如果我将 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

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

【问题讨论】:

    标签: javascript node.js javascript-objects


    【解决方案1】:

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

    【讨论】:

    • 谢谢! replaceAll() 原来是 Java 的一种习惯,而 Javascript 只是使用 replace()。
    【解决方案2】:

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

    【讨论】:

    • 解决了这个问题! replaceAll() 是 Java 编码的一种习惯,我没有意识到 Javascript 只使用了 replace()。
    猜你喜欢
    • 1970-01-01
    • 2012-08-25
    • 2021-01-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-21
    • 2015-11-18
    相关资源
    最近更新 更多