当前位置: 首页 > 知识库问答 >
问题:

React Native不支持Windows上的开发(还没有)?

龚招
2023-03-14

我相信很多人都很兴奋React Native现在也终于支持Android了。

但令人失望的是,它不支持在Windows机器上开发--在许多情况下,这将阻止React Native在大公司的应用,因为大公司不能仅仅改变他们的主操作系统。

我挖掘了一点,似乎不难让它运行在Windows上无论如何。

react-native-cliindex.js中从spawn更改为requirejs.exec,如下所示:

    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);
    //  }
    //});

这一更改使我能够运行React-native run-android而没有任何可见的错误。它启动模拟器和应用程序。

让它在Windows上运行的最后一个缺失的部分是:为什么开发服务器不能工作,或者为什么应用程序不能连接到它?

我得到“无法下载JS包...”红色死亡屏幕。看来react-native run-android未能启动它,尽管它打印出启动JS服务器...。请参阅底部的完整输出。

有谁能帮上忙吗?

谢谢你

    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 }

下面是一些更多的细节,说明我在使React-native run-android工作后,如何使开发服务器运行:

    Y:\Mobile>npm start

    > Mobile@0.0.1 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! Mobile@0.0.1 start: `node_modules/react-native/packager/packager.sh`
    npm ERR! Exit status 1
    npm ERR!
    npm ERR! Failed at the Mobile@0.0.1 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

然后我尝试了React-Native Start,但失败的原因如下:

    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

然后我尝试了node_modules/react-native/packager/packager.js,它实际上是这样工作的:

    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)

但随后我在红色死机屏幕中按下reload js,大约30秒后,它再次失败,开发服务器控制台打印该命令,然后退出开发服务器:

    <--- 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

我想我们离在Windows上运行已经很近了,我只需要在最后的部分得到一点帮助。

请帮忙

共有1个答案

司马俊晖
2023-03-14

更新:从版本0.14(2015年10月)起,Windows开发成为可能(详情),这要感谢社区的出色工作。

官方还不支持Windows,请参阅入门文档。

我们希望尽早发布,并首先关注Mac OS。

 类似资料:
  • 我目前正在移植一个Android应用程序到codename one。对于新的应用程序,这是一个在iOS、Android和Windows Phone上工作的要求。在默认的codename one数据库类的描述中,它说Windows Phone不被支持,应该只用于“非常大的数据处理”。相反,更便携的存储类别应该用于小型存储。 本机应用程序目前使用几个具有相当困难的查询的SQLite表。我不会说数据量很

  • Truffle supports development with Quorum, a version of Ethereum that adds new features on top of what Ethereum already provides. Specifically, Quorum adds the ability to create private blockchains bet

  • 问题内容: 我在dev /上没有关于usb的文件或路径 当我插入闪存盘时,dev /或mnt /或media /上没有任何内容。 返回: 我应该怎么做才能在bash上启用USB访问? 问题答案: 好消息,现在可以在Windows 10上通过drvfs挂载USB介质(包括FAT格式)和网络共享: 挂载可移动媒体:(例如D :) 安全卸载 您也可以不使用smbfs挂载网络共享: 您至少需要Build

  • 我正在尝试重新构建和编译我的Android Studio项目,在为之前,它运行良好。将该库升级到3.9.1后,我遇到了此错误,我无法修复它。 task的执行失败:react-native-jumio-mobiles dk:compileDebugKotlin。 无法解析配置':react-native-jumio-mobilesdk:debugCompileClasspath'的所有文件。未能转换

  • 我想要的完整标题: 错误:最小支持的Gradle版本是2.10,Gradle3.x还不支持。当前版本是2.4。如果使用gradle包装器,请尝试将...\gradle-wrapper.properties中的distributionUrl编辑为gradle-2.10-all.zip 我有一个老项目,我试图在Android Studio2.2(预览6)中打开,当我试图构建该项目时,我得到以下错误。

  • 开发者app 开发者app可以在你开发Tabris.js app的同一台机器上运行,不需要模拟器或者Windows SDK。这时,你需要注意下面的点: 鼠标并不总能替代触摸屏。某些手势无法通过鼠标输入来识别。笔记本电脑/平板电脑混合设备的用户在这里有一定优势。 用单指滑动屏幕边缘的手势来打开开发者控制台将不起作用:因为操作系统保留该手势来打开操作中心。作为替代,你可以使用鼠标或笔来做手势,也可以使