web-dev-qa-db-fra.com

Le rechargement à chaud ne fonctionne pas dans react-native android

Je l'ai essayé sur Windows 10 et Ubuntu 16.04. Dans les deux cas, le rechargement à chaud ne fonctionne qu'avec des modifications dans jsx, mais pas, lorsque je change un variabel ou une fonction ou autre chose en javascript. Le rechargement à chaud est activé. Le rechargement en direct est désactivé. Lorsque j'enregistre une modification dans Visual Studio Code Editor, le périphérique virtuel (studio Android) se recharge, mais les modifications ne sont pas là. La même chose sur le périphérique physique dans l'application EXPO.

D'abord, je n'ai pas installé de gardien. Hot Relaod ne fonctionne pas. Après l'avoir installé, Hot Reload ne fonctionne pas trop.

Je démarre l'application avec create-react-native-app. Il n'est pas éjecté.

package.json:

{
  "name": "NativeReduxSaga",
  "version": "0.1.0",
  "private": true,
  "devDependencies": {
    "jest-expo": "25.0.0",
    "react-native-debugger-open": "^0.3.17",
    "react-native-scripts": "1.11.1",
    "react-test-renderer": "16.2.0"
  },
  "main": "./node_modules/react-native-scripts/build/bin/crna-entry.js",
  "scripts": {
    "start": "react-native-scripts start",
    "eject": "react-native-scripts eject",
    "Android": "react-native-scripts Android",
    "ios": "react-native-scripts ios",
    "test": "node node_modules/jest/bin/jest.js",
    "postinstall": "rndebugger-open --expo"
  },
  "jest": {
    "preset": "jest-expo"
  },
  "dependencies": {
    "@redux-offline/redux-offline": "^2.3.2",
    "expo": "^25.0.0",
    "prop-types": "^15.6.1",
    "react": "16.2.0",
    "react-native": "0.52.0",
    "react-native-autocomplete-input": "^3.5.0",
    "react-navigation": "^1.5.2",
    "react-redux": "^5.0.7",
    "redux": "^3.7.2",
    "redux-devtools-extension": "^2.13.2",
    "redux-logger": "^3.0.6",
    "redux-observable": "^0.18.0",
    "redux-promise-middleware": "^5.0.0",
    "redux-saga": "^0.16.0",
    "redux-thunk": "^2.2.0",
    "rxjs": "^5.5.7"
  }
}

version gardien

{
    "version": "4.9.1",
    "buildinfo": "94e66865386e844f2cffe52e355a94c96562d2e3 2018-03-12T19:58:02.0000000Z"
}

version de nœud v6.13.1

J'ai lu dans certains articles ici, que cela pourrait aider sous Windows, à augmenter le MAX_WAIT_TIME. Mais je n'ai pas de fichier\node_modules\react-native\node_modules\node-haste\lib\FileWatcher\index.js.

Et pourquoi cela ne fonctionne-t-il pas aussi sur Ubuntu?

Ai-je vraiment besoin du gardien? Comment doit-il être configuré? Mon fichier .watchmanconfig est un objet vide comme {}.

Hot Reload fonctionne-t-il généralement avec create-react-native-app?

Est-ce que quelqu'un sait ce que je peux essayer ici, pour faire fonctionner le rechargement à chaud? Merci pour votre aide!

5
fricko

En fait, il y a une différence entre le rechargement à chaud et le rechargement en direct.

Hot Reloading est un rechargement instantané tout en gardant intact l'état de votre application. Cependant, il ne fonctionne qu'à l'intérieur de la méthode render et n'est déclenché que sur les extensions des classes React.Component et Component

Un péché:

class A extends Component ...
class B extends React.Component ...

Live Reload d'autre part, reconstruit votre application et supprime l'état de votre application. Il comprend tout, des variables et des méthodes à la plus simple des chaînes. C'est pourquoi on partira toujours de l'écran de démarrage de l'application (car l'état est perdu).

J'espère que ça aide!

16
Ajay Gupta

Suppression du git index.lock le fichier a fonctionné pour moi

rm -rf .git/index.lock

5
cdvx

J'ai effectué les étapes suivantes pour résoudre ce problème:

  1. mkdir Android/app/src/main/assets

  2. bundle react-native --platform Android --dev false --entry-file index.js --bundle-output Android/app/src/main/assets/index.Android.bundle - -assets-dest Android/app/src/main/res

  3. Secouez Android ou cmd + d dans le simulateur, vous obtiendrez un menu.

  4. Une fois activer et désactiver le rechargement à chaud.

  5. effacer quelle que soit l'adresse IP que vous utilisez dans les paramètres de développement -> Débogage -> Hôte et port du serveur de débogage pour le périphérique.

  6. Activez le rechargement à chaud.

  7. Dans le terminal, accédez à votre répertoire de projet -> react-native start

  8. react-native run-Android ou exécutez-le directement dans votre Android studio.

1
Raj Kiran

Pour toute personne rencontrant ce problème lors de l'utilisation de WSL 2, les fichiers doivent exister à l'intérieur du sous-système Linux au lieu de l'intérieur des dossiers Windows montés pour que le fichier à regarder fonctionne correctement. Tiré de ce post sur Reddit :

Ils ont changé le protocole de partage de fichiers, passant de leur propre protocole développé sur mesure à l'utilisation du protocole 9P, qui pour l'instant ne prend pas en charge l'événement de modification de fichier.

Je pense que vous pouvez résoudre ce problème en plaçant votre code sur le système de fichiers Linux (ex: dans le répertoire personnel de votre utilisateur) et accéder à ces fichiers via le partage WSL,\wsl $\DISTRO_NAME depuis Windows.

Dans l'Explorateur Windows, si vous allez dans\wsl $, vous devriez voir toutes vos distributions WSL Linux installées et pouvez accéder à tous les fichiers sur leurs systèmes de fichiers.

0
ParkerD

dans Android allez dans votre recherche MainApplication.Java pour @Override public boolean getUseDeveloperSupport() { return true; }

Assurez-vous qu'il renvoie vrai. Ce pourrait être le problème

0
Joseph Gichuru

Pour moi, le problème était avec le AndroidX, en gros, vous avez besoin de temps pour migrer vers AndroidX en raison des anciennes versions réactives natives

ouvrez simplement votre projet dans le Android Studio

Refactor -> Migrate to Android X ... et suivez les instructions

et n'évitez pas de faire une sauvegarde quand elle sera promue côté sauvegarde

0
Sultan Ali