Node.js v14.18.1调用replaceAll方法报不存在函数错误是什么原因?
问题根因
String.prototype.replaceAll是ES2021(ES12)才正式加入ECMAScript标准的字符串方法,Node.js 从v15.0.0版本才开始原生支持该特性,你使用的v14.18.1属于v14版本分支,没有内置该方法,因此调用时会抛出类型错误。- MDN的代码运行框依托浏览器的JS引擎执行代码,目前主流现代浏览器很早都完成了对
replaceAll方法的适配,所以相同代码可以正常运行。
解决方案
- 低版本Node.js环境下可以用
replace搭配带全局修饰符g的正则实现相同效果,写法为:"anything".replace(/a/g, "a"),注意不能省略g修饰符,否则只会替换第一个匹配到的字符。 - 升级Node.js到v15.0.0及以上版本即可原生使用
replaceAll,优先选择v16、v18、v20这类LTS长期支持版本,稳定性更有保障。
内容的提问来源于stack exchange,提问作者allez l'OM
相关产品推荐
相关产品推荐

