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_modules
和package-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 start
或npm 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 上不起作用