如何清除react-native缓存?

Vil*_*oja 25 javascript java android reactjs react-native

在react-native开发中,构建应用程序时使用了多个缓存:

  1. React-native packager缓存
  2. 仿真器缓存
  3. Java端缓存(.gradle)文件夹(仅在android中)
  4. npm缓存(如果相关?)

我也错过了什么吗?因为我正在尝试清除react-native中的缓存,以便能够重复仅在首次使用时发生的错误.但清除上述缓存并没有帮助.这是在Android上.当应用程序正在构建时,大多数行都没有像预期的那样说UP-TO-DATE,因为我清除了缓存.

但是,仍有许多行打印此文本.喜欢:

app:preBuild UP-TO-DATE

app:preDebugBuild UP-TO-DATE

:app:preReleaseBuild UP-TO-DATE

问题是,如何清除与react-native开发相关的整个缓存?

ßãl*_*ãjî 48

最简单的一个(react native、npm 和 expo)

对于 React Native

react-native start --reset-cache
Run Code Online (Sandbox Code Playgroud)

对于 npm

npm start -- --reset-cache
Run Code Online (Sandbox Code Playgroud)

世博会

expo start -c
Run Code Online (Sandbox Code Playgroud)

  • 我收到“错误:未知选项‘--reset-cache’”我该怎么办......? (8认同)
  • @Leonard 尝试使用“纱线缓存清理” (4认同)

hon*_*lop 38

目前,它是使用 构建的npx,因此需要更新。

终端npx react-native start --reset-cache

iOSXcode -> Product -> Clean Build Folder

安卓Android Studio -> Build -> Clean Project


小智 33

对于React Native Init方法(不使用expo),请使用:

npm start -- --reset-cache
Run Code Online (Sandbox Code Playgroud)

  • “--”有什么作用? (5认同)
  • @kojow7 '--' 将选项与参数分开。-- npm 之后的所有内容都不会读取为选项,而是会传递到启动脚本(大多数 UNIX/Linux 命令遵循此选项/参数分隔约定) (4认同)
  • 这帮助我解决了 [`Error: unknown`](/sf/answers/3957738571/) (2认同)
  • 可以在不启动 Metro 捆绑器的情况下完成此操作吗? (2认同)
  • 为了更好的方法,在执行此命令之前关闭 Metro 捆绑程序并运行它。 (2认同)

Vik*_*wal 17

清除React Native Project的缓存:

npm <6.0且RN <0.50:

 watchman watch-del-all && rm -rf $TMPDIR/react-* &&
 rm -rf node_modules/ && npm cache clean && npm install && 
 npm start -- --reset-cache
Run Code Online (Sandbox Code Playgroud)

npm> = 6.0且RN> = 0.50:

 watchman watch-del-all && rm -rf $TMPDIR/react-native-packager-cache-* &&
 rm -rf $TMPDIR/metro-bundler-cache-* && rm -rf node_modules/ && npm cache clean --force &&
 npm install && npm start -- --reset-cache
Run Code Online (Sandbox Code Playgroud)

  • 一旦遇到具有旧代码的缓存生成的错误,这似乎是唯一可能的方法。如果调试并在 RN 代码中使用一些“console.log”,那真的很痛苦。任何人都有一些更短的解决方案,我的意思是避免 RN 框架使用缓存代码? (2认同)

小智 13

以下命令适用于 Android 和 Yarn,

cd android && ./gradlew cleanBuildCache && cd .. &&
watchman watch-del-all && rm -rf node_modules/ &&
rm -rf $TMPDIR/react-native-packager-cache-* &&
rm -rf $TMPDIR/metro-bundler-cache-* &&  
yarn cache clean && yarn install && 
yarn start --reset-cache
Run Code Online (Sandbox Code Playgroud)


Gli*_*nab 9

这是 GitHub 上的精彩讨论,对我帮助很大。 清除 React Native 项目的缓存 作者Jarret Moses

有 4 种不同情况的解决方案。

  1. RN <0.50 -
    watchman watch-del-all && rm -rf $TMPDIR/react-* && rm -rf node_modules/ && npm cache clean && npm install && npm start -- --reset-cache

  2. RN >=0.50 - watchman watch-del-all && rm -rf $TMPDIR/react-native-packager-cache-* && rm -rf $TMPDIR/metro-bundler-cache-* && rm -rf node_modules/ && npm cache clean && npm install && npm start -- --reset-cache

  3. NPM >=5 - watchman watch-del-all && rm -rf $TMPDIR/react-* && rm -rf node_modules/ && npm cache verify && npm install && npm start -- --reset-cache
  4. 窗户 - del %appdata%\Temp\react-native-* & cd android & gradlew clean & cd .. & del node_modules/ & npm cache clean --force & npm install & npm start -- --reset-cache

该解决方案类似于Vikram Biwal 的答案。

下面给定的链接中有一个讨论,因此即使上述 4 种情况不适合您,您也可以滚动浏览并找到可能的解决方案。


Moh*_*sin 8

对于那些使用expo-cli的人

世博会开始-c


Fir*_*med 8

这对我有用:

watchman watch-del-all && rm -f yarn.lock && rm -rf node_modules && yarn && yarn start --reset-cache
Run Code Online (Sandbox Code Playgroud)

  • 无需删除您的yarn.lock文件,您将导致所有依赖项在此过程中更新。 (5认同)

Fab*_*nha 7

清除 React Native 项目的缓存:如果您确定该模块存在,请尝试以下步骤:

  1. 清除守望者手表:npm watchman watch-del-all
  2. 删除node_modules: rm -rf node_modules 并运行yarn install
  3. 重置 Metro 的缓存:yarn start --reset-cache
  4. 删除缓存: rm -rf /tmp/metro-*

  • 如果我尝试 `rm -rf /tmp/metro-*` 我得到 `zsh: no matches find: /tmp/metro-*` 我正在使用 RN 0.64.1。任何想法? (4认同)

spa*_*dev 5

尝试这个

react-native start --reset-cache
Run Code Online (Sandbox Code Playgroud)


Olc*_*taş 5

如果您使用的是WebStorm,请按运行按钮左侧的配置选择下拉按钮,然后选择编辑配置:

编辑配置

双击Start React Native Bundler部分底部Before launch

发射前

进入--reset-cache部分Arguments

论据