.replaceAll is not a function nodejs14 不可用 replaceAll()
最近写了个 Nodejs
的后台,在本地跑的好好的,布到服务器上之后就提示这个信息:
原因
找了半天,原因是因为 replaceAll
是在 nodejs15 之后才加入的, nodejs14 是没有这个方法的。
而我服务器上是 nodejs14 所以才会提示没有这个方法。
解决办法
1. 升级 nodejs14 到 nodejs16 或更高版本
当前时间是 2022-04-18,目前的稳定版本是 nodejs16
关于如何升级 nodejs ,请看我的这篇文件: macOS Linux 如何升级 nodejs
2. 自己写个 replaceAll 的方法
解决办法就是升级到 nodejs16 或者自己再写个 replaceAll
的方法
StackOverflow 中的 replaceAll 方法:
https://stackoverflow.com/a/62825372/8086267
//Taken from https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions
function escapeRegExp(string) {
return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); // $& means the whole matched string
}
function replaceAll(str, match, replacement){
return str.replace(new RegExp(escapeRegExp(match), 'g'), ()=>replacement);
}
console.log(replaceAll('a.b.c.d.e', '.', '__'));
console.log(replaceAll('a.b.c.d.e', '.', '$&'));