web-dev-qa-db-fra.com

React Native ne prend pas (encore) en charge le développement sous Windows?

Je crois que beaucoup de gens sont très enthousiastes à propos de React Native prend enfin enfin en charge Android aussi.

MAIS il y aura une énorme déception qu'il ne prenne pas en charge le développement sur des machines Windows - ce qui dans de nombreux cas empêchera l'adoption de React Native dans les grandes entreprises qui ne peuvent pas simplement changer leur système d'exploitation principal.

J'ai creusé un peu et il ne semble pas difficile de le faire fonctionner sous Windows de toute façon.

Passer du frai au requirejs.exec dans react-native-cliindex.js comme ça:

    spawn.exec(cmd + ' ' + args.join(' '), function(code, output){
      if (code !== 0) {
        cb(new Error('Command exited with a non-zero status ' + code + '\n' + cmd + ' ' + args.replace(',', ' ')));
      } else {
        cb(null);
      }
    });
    //var proc = spawn(cmd, args, {stdio: 'inherit'});
    //proc.on('close', function(code) {
    //  if (code !== 0) {
    //    cb(new Error('Command exited with a non-zero status'));
    //  } else {
    //    cb(null);
    //  }
    //});

Cette modification me permet d'exécuter react-native run-Android sans aucune erreur visible. Il démarre l'émulateur et l'application.

La dernière pièce manquante pour le faire fonctionner sous Windows est la suivante: pourquoi le serveur de développement ne fonctionne-t-il pas ou pourquoi l'application ne peut-elle pas s'y connecter?

J'obtiens "Impossible de télécharger JS Bundle ..." écran rouge de la mort. Il paraît que react-native run-Android n'a pas pu le démarrer, même s'il imprime Starting JS server.... Voir la sortie complète en bas.

Quelqu'un là-bas qui peut aider à résoudre ce problème?

Je vous remercie

    Y:\Mobile>react-native run-Android
    Starting JS server...
        Building and installing the app on the device (cd Android && gradlew.bat installDebug)...
    :app:preBuild UP-TO-DATE
    :app:preDebugBuild UP-TO-DATE
    :app:checkDebugManifest
        :app:preReleaseBuild UP-TO-DATE
    :app:prepareComAndroidSupportAppcompatV72300Library UP-TO-DATE
    :app:prepareComAndroidSupportSupportV42300Library UP-TO-DATE
    :app:prepareComFacebookFrescoDrawee061Library UP-TO-DATE
    :app:prepareComFacebookFrescoFbcore061Library UP-TO-DATE
    :app:prepareComFacebookFrescoFresco061Library UP-TO-DATE
    :app:prepareComFacebookFrescoImagepipeline061Library UP-TO-DATE
    :app:prepareComFacebookFrescoImagepipelineOkhttp061Library UP-TO-DATE
    :app:prepareComFacebookReactReactNative0110Library UP-TO-DATE
    :app:prepareOrgWebkitAndroidJscR174650Library UP-TO-DATE
    :app:prepareDebugDependencies
        :app:compileDebugAidl UP-TO-DATE
    :app:compileDebugRenderscript UP-TO-DATE
    :app:generateDebugBuildConfig UP-TO-DATE
    :app:generateDebugAssets UP-TO-DATE
    :app:mergeDebugAssets UP-TO-DATE
    :app:generateDebugResValues UP-TO-DATE
    :app:generateDebugResources UP-TO-DATE
    :app:mergeDebugResources UP-TO-DATE
    :app:processDebugManifest UP-TO-DATE
    :app:processDebugResources UP-TO-DATE
    :app:generateDebugSources UP-TO-DATE
    :app:processDebugJavaRes UP-TO-DATE
    :app:compileDebugJavaWithJavac UP-TO-DATE
    :app:compileDebugNdk UP-TO-DATE
    :app:compileDebugSources UP-TO-DATE
    :app:preDexDebug UP-TO-DATE
    :app:dexDebug UP-TO-DATE
    :app:validateDebugSigning
        :app:packageDebug UP-TO-DATE
    :app:zipalignDebug UP-TO-DATE
    :app:assembleDebug UP-TO-DATE
    :app:installDebug
    Installing APK 'app-debug.apk' on 'reactnative(AVD) - 6.0'
    Installed on 1 device.

        BUILD SUCCESSFUL

    Total time: 20.332 secs
    Starting the app (adb Shell am start -n com.mobile/.MainActivity)...
    Starting: Intent { cmp=com.mobile/.MainActivity }

MISE À JOUR

Voici quelques détails supplémentaires sur ce que j'ai essayé de faire fonctionner le serveur de développement après avoir obtenu react-native run-Android travail:

J'ai essayé - mais `npm start 'échoue avec:

    Y:\Mobile>npm start

    > [email protected] start Y:\Mobile
    > node_modules/react-native/packager/packager.sh

    'node_modules' is not recognized as an internal or external command,
    operable program or batch file.

    npm ERR! Windows_NT 6.3.9600
    npm ERR! argv "C:\\Program Files\\nodejs\\node.exe" "C:\\Program Files\\nodejs\\node_modules\\npm\\bin\\npm-cli.js" "start"
    npm ERR! node v4.0.0
    npm ERR! npm  v2.14.2
    npm ERR! code ELIFECYCLE
    npm ERR! [email protected] start: `node_modules/react-native/packager/packager.sh`
    npm ERR! Exit status 1
    npm ERR!
    npm ERR! Failed at the [email protected] start script 'node_modules/react-native/packager/packager.sh'.
    npm ERR! This is most likely a problem with the Mobile package,
    npm ERR! not with npm itself.
    npm ERR! Tell the author that this fails on your system:
    npm ERR!     node_modules/react-native/packager/packager.sh
    npm ERR! You can get their info via:
    npm ERR!     npm owner ls Mobile
    npm ERR! There is likely additional logging output above.

    npm ERR! Please include the following file with any support request:
    npm ERR!     Y:\Mobile\npm-debug.log

Ensuite, j'ai essayé react-native start qui a échoué comme ceci:

    Y:\Mobile>react-native start
    module.js:338
        throw err;
        ^

    Error: Cannot find module 'Y:\Mobile\packager.js'
        at Function.Module._resolveFilename (module.js:336:15)
        at Function.Module._load (module.js:286:25)
        at Function.Module.runMain (module.js:475:10)
        at startup (node.js:117:18)
        at node.js:951:3

Ensuite, j'ai essayé node node_modules/react-native/packager/packager.js qui fonctionne en fait comme ceci:

    Y:\Mobile>node node_modules/react-native/packager/packager.js
     ┌────────────────────────────────────────────────────────────────────────────┐
     │  Running packager on port 8081.                                            │
     │                                                                            │
     │  Keep this packager running while developing on any JS projects. Feel      │
     │  free to close this tab and run your own packager instance if you          │
     │  prefer.                                                                   │
     │                                                                            │
     │  https://github.com/facebook/react-native                                  │
     │                                                                            │
     └────────────────────────────────────────────────────────────────────────────┘
    Looking for JS files in
       Y:\Mobile


    React packager ready.

    [10:43:07 AM] <START> Building Dependency Graph
    [10:43:07 AM] <START> Crawling File System
    [10:43:17 AM] <END>   Crawling File System (10513ms)
    [10:43:17 AM] <START> Building in-memory fs for JavaScript
    [10:43:18 AM] <END>   Building in-memory fs for JavaScript (1116ms)
    [10:43:18 AM] <START> Building in-memory fs for Assets
    [10:43:19 AM] <END>   Building in-memory fs for Assets (1090ms)
    [10:43:19 AM] <START> Building Haste Map
    [10:43:20 AM] <START> Building (deprecated) Asset Map
    [10:43:20 AM] <END>   Building (deprecated) Asset Map (221ms)
    [10:43:20 AM] <END>   Building Haste Map (639ms)
    [10:43:20 AM] <END>   Building Dependency Graph (13360ms)

Mais alors j'appuie sur Reload JS dans l'écran rouge de la mort et après environ 30 secondes environ, il échoue à nouveau et la console du serveur de développement l'imprime puis quitte le serveur de développement:

    <--- Last few GCs --->

      172210 ms: Scavenge 1402.5 (1455.6) -> 1402.5 (1455.6) MB, 9.6 / 0 ms (+ 2.0 ms in 1 steps since last GC) [allocation failure] [incremental marking delaying mark-sweep].
      173083 ms: Mark-sweep 1402.5 (1455.6) -> 1402.5 (1455.6) MB, 872.5 / 0 ms (+ 3.0 ms in 2 steps since start of marking, biggest step 2.0 ms) [last resort gc].
      173954 ms: Mark-sweep 1402.5 (1455.6) -> 1402.4 (1455.6) MB, 871.1 / 0 ms [last resort gc].


    <--- JS stacktrace --->

    ==== JS stack trace =========================================

    Security context: 0000018472E37349 <JS Object>
        1: join [path.js:~217] [pc=0000039512658044] (this=0000006899C67369 <an Object with map 0000008FE2423E19>)
        2: arguments adaptor frame: 3->0
        3: /* anonymous */(aka /* anonymous */) [Y:\Mobile\node_modules\react-native\packager\react-packager\src\DependencyResolver\DependencyGraph\ResolutionRequest.js:~226] [pc=00000395137E2AFA] (this=0000018472E04131 <undefined>,realModuleN...

    FATAL ERROR: CALL_AND_RETRY_LAST Allocation failed - process out of memory

Je pense que nous sommes tellement proches de le faire fonctionner sur Windows, je n'ai besoin que d'un peu d'aide avec les dernières pièces ici.

Veuillez aider

21
Christine

MISE À JOUR: À partir de la version 0.14 (octobre 2015), le développement Windows est possible ( détails ) grâce au travail formidable de la communauté.


Windows n'est officiellement pas encore pris en charge, consultez la documentation sur Mise en route .

Nous voulions sortir la version le plus tôt possible et nous concentrer d'abord sur Mac OS.

Les membres de la communauté ont obtenu React Native pour travailler sur Linux avec quelques modifications minimes (nous les documenterons bientôt)) et on dirait que quelqu'un vient de le faire fonctionner également sur Windows:

https://github.com/facebook/react-native/issues/2787

14
Martin Konicek

J'ai trouvé un moyen de le réparer en installant cygwin et en exécutant: cd package sh package.sh

J'espère que ça aide quelqu'un.

2
funerr

ReactWindows ajoute la prise en charge du SDK Windows 10, qui vous permet de créer des applications pour:

  • Windows 10
  • Windows 10 Mobile
  • Xbox One (UWP)
  • Windows 7 et 8.1 (WPF)
2
ohho