create-react-app react-app-polyfill没有对String.prototype.replaceAll进行填充,

tktrz96b  于 5个月前  发布在  React
关注(0)|答案(3)|浏览(59)

描述bug

react-app-polyfill 没有实现 String.prototype.replaceAll 的多态。

环境

Environment Info:

  current version of create-react-app: 5.0.1
  running from C:\Users\listl\scoop\persist\nodejs\cache\_npx\c67e74de0542c87c\node_modules\create-react-app

  System:
    OS: Windows 10 10.0.19044
    CPU: (16) x64 AMD Ryzen 7 PRO 4750U with Radeon Graphics
  Binaries:
    Node: 18.8.0 - ~\scoop\apps\nodejs\current\node.EXE
    Yarn: Not Found
    npm: 8.18.0 - ~\scoop\apps\nodejs\current\npm.CMD
  Browsers:
    Chrome: 81.0.4044.92
    Edge: Spartan (44.19041.1266.0), Chromium (104.0.1293.70)
    Internet Explorer: 11.0.19041.1566
  npmPackages:
    react: ^18.2.0 => 18.2.0
    react-dom: ^18.2.0 => 18.2.0
    react-scripts: 5.0.1 => 5.0.1
  npmGlobalPackages:
    create-react-app: Not Found

重现步骤

  1. 运行 npx create-react-app test --template typescript
  2. src/index.tsx 的第一行添加 import "react-app-polyfill/stable";
  3. package.jsonbrowserlists.production 中添加 "chorme > 80"
  4. 将 App.tsx 文件更改为以下内容:
function App() {
  return <>{"app".replaceAll("a", "A")}</>;
}

export default App;
  1. 运行 npm start

预期行为

它显示 "App"。从 Edge 104 截图

实际行为

"app".replaceAll 不是一个函数。从 Chrome 81 截图,Chrome 从 85 开始支持 String.prototype.replaceAll

rmbxnbpk

rmbxnbpk1#

同样的错误在我的生产构建中发生了,请修复!

iklwldmw

iklwldmw2#

是否有任何修复方法?

iyr7buue

iyr7buue3#

Create React App已被弃用,将不再进行更新。请迁移到vite并使用String.prototype.replace与RegEx一起使用g标志:

- myStr.replaceAll('-', '_');
+ myStr.replace(/-/g, '_');

相关问题