问题
在 Expo 框架中遇到 TypeError: relativePosixPath.replaceAll is not a function 这样的错误通常是因为你正在使用的 JavaScript 环境中不支持 String.prototype.replaceAll 方法。replaceAll 是一个相对较新的 JavaScript 方法,它在 ES2020(即 ECMAScript 2020 或 ES11)中被引入。
如果你遇到这个问题,可能是因为以下几个原因:
-
Node.js 版本过旧:如果你在本地开发环境中运行 Expo,并且 Node.js 版本低于 15.0,那么 replaceAll 方法可能不可用。请升级到最新的 Node.js 版本。
-
JavaScript 引擎版本过旧:如果你在某些旧的浏览器或 JavaScript 引擎上运行代码,它们可能不支持 replaceAll 方法。检查并更新到最新的 JavaScript 引擎或浏览器版本。
-
Polyfill 缺失:如果你需要在不支持 replaceAll 的环境中运行代码,你可以使用 polyfill 来提供这个方法的实现。例如,你可以使用 core-js 库来引入缺失的特性。
解决
在我的项目中, 是因为node版本过旧引起的这个报错:
可以在官网下载最新的node, windows系统下载msi, 然后直接安装就可以了. node安装的时候会自动安装匹配的新版本npm, 所以npm就不用另外装了.
node官网: https://nodejs.org/en/download/
安装好后再确认一下:
这时候再运行 npx expo start
启动项目 , 就可以正常运行了.
npx expo start