我正在使用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(或者传入的任何其他参数)。有谁知道这个问题的解决方案?
答案 0 :(得分:3)
您不想使用replace
方法吗?如果我尝试在字符串上调用replaceAll
,我会得到同样的错误。它不是字符串对象的方法。
答案 1 :(得分:3)
错误消息不显示类型,但toString()
结果,所以一切都正确。字符串没有replaceAll
方法。