Expo reload 在 Linux 上不起作用(使用 Android 设备)

Posted

技术标签:

【中文标题】Expo reload 在 Linux 上不起作用(使用 Android 设备)【英文标题】:Expo reload not working on Linux (with Android device) 【发布时间】:2018-10-26 01:42:41 【问题描述】:

我的 expo 应用程序有问题。很遗憾,它没有接受我的改变。实时重新加载,热重新加载不起作用,当我摇动设备并按“重新加载”时,我的应用重新加载,但没有出现更改。

我已经做了什么:

重新安装守望者 删除node_modulespackage-lock.json,运行$ npm install 在其他地方克隆并重建我的project 更新 expo-cli 和 expo-android-app

[我正在使用elementary os (linux)、expo-cli 和android 设备]

类似的事情发生在某人身上吗?你是怎么解决的?

我的项目依赖:

"dependencies": "@expo/samples": "2.1.1", "@expo/vector-icons": "^6.3.1", "expo": "^25.0.0", "firebase": "^4.12.1", "native-base": "^2.3.10", "react": "16.2.0", "react-native": "https://github.com/expo/react-native/archive/sdk-25.0.0.tar.gz", "react-navigation": "^1.0.0-beta.27"

【问题讨论】:

【参考方案1】:

“神奇地解决”删除node_modules 文件夹并运行$ npm install(再次)并运行...(?)

【讨论】:

【参考方案2】:

我遇到了同样的问题。我注意到我已将我的应用从开发切换到生产,然后又回到开发。

问题是当我在最后一步切换到开发时,缓存仍在生产中。

我的控制台中的日志是:

Running application "main" with appParams: "initialProps":"exp":"initialUri":"exp://192.168.43.89:19000","manifest":"iconUrl":"http://192.168.43.89:19001/assets/./assets/icon.png","isVerified":true,"hostUri":"192.168.43.89:19000","version":"1.0.0","slug":"myapp","splash":"resizeMode":"contain","backgroundColor":"#f7be13","image":"./assets/splash.png","imageUrl":"http://192.168.43.89:19001/assets/./assets/splash.png","logUrl":"http://192.168.43.89:19000/logs","privacy":"public","assetBundlePatterns":["**/*"],"primaryColor":"#023C69","android":"versionCode":1,"package":"com.apppzzzz.myapp","config":"googleMaps":"apiKey":"","googleSignIn":"certificateHash":"STRING","apiKey":"STRING","orientation":"portrait","bundleUrl":"http://192.168.43.89:19001/node_modules/expo/AppEntry.bundle?platform=android&dev=false&minify=true&hot=false&assetPlugin=E%3A%5Ccde%5CTutorial%5CReactNative%5Cmyapp_rnapp%5Cnode_modules%5Cexpo%5Ctools%5ChashAssetFiles.js","updates":"fallbackToCacheTimeout":0,"ios":"supportsTablet":true,"packagerOpts":"dev":false,"lanType":"ip","hostType":"lan","minify":true,"urlRandomness":"ha-wky","sdkVersion":"32.0.0","mainModuleName":"node_modules/expo/AppEntry","xde":true,"id":"@anonymous/myapp-dec62901-f76d-419c-8e72-76f2c0e279d7","androidStatusBar":"backgroundColor":"#f7be10","debuggerHost":"192.168.43.89:19001","platforms":["ios","android"],"env":,"icon":"./assets/icon.png","loadedFromCache":true,"developer":"tool":"expo-cli","projectRoot":"E:\\cde\\Tutorial\\ReactNative\\myapp_rnapp","name":"myapp","shell":false,"rootTag":1
. __DEV__ === false, development-level warning are OFF, performance optimizations are ON

注意__DEV__ === false

所以我使用SHIFT+R 清除了控制台中的缓存 然后去我的手机清除Expo应用的缓存

然后重新启动我的开发服务器,一切正常!

日志 __DEV__ === false 更改为 __DEV__ === true ,expo-reloading 问题消失了!

【讨论】:

【参考方案3】:

在我的手机上卸载 expo 应用程序并重新安装它。然后我可以看到应用程序正在重新构建并重新加载到手机中。看起来我的应用程序已缓存在手机中,即使 javascripts 发生更改,也会使用旧版本。

【讨论】:

重装的情况下。运行yarn startnpm start 后从终端简单地按a【参考方案4】:

我在 Windows 机器和 iPhone 6S 上运行 expo 时发生了类似的事情。通过创建一个空的 expo 文件夹(expo init ReloadProject),进入并在那里重新启动 expo 客户端(expo start),我能够让它“重新加载”代码。

在用我的手机访问它(并看到默认的应用程序消息)并回到我原来的项目后,我能够使用更新版本的代码再次启动 expo,并在手机上看到它正常工作。

除此之外,我还尝试了还原代码更改、删除 node_modules 并重新安装、在手机上重新启动计算机和应用程序、手动单击重新加载、尝试热重新加载和实时重新加载,但这些方法都不起作用。

【讨论】:

顺便说一句,这发生在我使用虚拟 ubuntu 的 Windows 10 上【参考方案5】:

我通过将我的 Windows 笔记本电脑连接到 wifi(与 Android 设备相同)而不是有线连接解决了我的问题。

尽管 wifi 和有线网络在同一个 LAN 上,但其他一切都运行良好。

【讨论】:

【参考方案6】:

如果您在物理设备上工作,请清除 Expo 应用程序的数据或卸载然后重新安装。它对我有用。

【讨论】:

以上是关于Expo reload 在 Linux 上不起作用(使用 Android 设备)的主要内容,如果未能解决你的问题,请参考以下文章

React Native Expo 自定义字体权重在 iOS 设备上不起作用

调用firestore collection()在博览会上不起作用

JSON.parse() 在 Linux 和 Mac 上不起作用

Nlog 在 linux docker 容器上不起作用

堆栈粉碎代码在 Linux 内核 2.6.38.7 上不起作用...请帮助

Storage::put() 在 Linux 服务器上不起作用