.replaceAll is not a function nodejs14 不可用 replaceAll()

最近写了个 ​​Nodejs​​ 的后台,在本地跑的好好的,布到服务器上之后就提示这个信息:

.replaceAll is not a function nodejs14不可用 replaceAll_nodejs

原因

找了半天,原因是因为 ​​replaceAll​​​ 是在 nodejs15 之后才加入的, nodejs14 是没有这个方法的。
而我服务器上是 nodejs14 所以才会提示没有这个方法。

解决办法

1. 升级 nodejs14 到 nodejs16 或更高版本

当前时间是 2022-04-18,目前的稳定版本是 nodejs16

关于如何升级 nodejs ,请看我的这篇文件: ​​macOS Linux 如何升级 nodejs​

.replaceAll is not a function nodejs14不可用 replaceAll_nodejs_02

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', '.', '$&'));