React Native 不支持 Windows 上的开发(还)?
React Native does not support development on Windows (yet)?
我相信大多数人都对 React Native 现在终于支持 Android 感到非常兴奋。
但是,它不支持在 Windows 机器上进行开发,这会让人非常失望——在许多情况下,这会阻止大公司采用 React Native,因为大公司不能只改变他们的主要 OS.
我挖掘了一下,似乎不难得到它 运行 宁 Windows 无论如何。
在 react-native-cli
index.js
中从出生点更改为 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 上唯一缺少的最后一块是:
为什么开发服务器不工作 - 或者为什么应用程序不能连接到它?
我收到 "Unable to download JS Bundle..." 红屏死机。似乎 react-native run-android
未能启动它,即使它打印 Starting JS server...
。请参阅底部的完整输出。
有人可以帮忙解决这个问题吗?
谢谢
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
工作后尝试获取开发服务器 运行ning 的更多详细信息:
我试过了 - 但 `npm start' 失败了:
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 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 了,我只需要最后一点帮助就可以了。
请帮忙
更新:自 0.14 版(2015 年 10 月)起,Windows 由于社区的出色工作,开发成为可能(details)。
Windows 官方尚未支持,请参阅 Getting Started 上的文档。
我们希望尽快发布该版本,并首先关注 Mac OS。
社区中的人们让 React Native 在 Linux 上工作,并进行了一些最小的更改(我们将很快记录这些)并且看起来有人也刚刚在 Windows 上工作:
我通过安装 cygwin 和 运行 找到了修复它的方法:
cd package
sh package.sh
希望对大家有所帮助。
ReactWindows 添加了对 Windows 10 SDK 的支持,允许您为以下项目构建应用程序:
- Windows 10
- Windows 10 手机
- Xbox One (UWP)
- Windows 7 和 8.1 (WPF)
我相信大多数人都对 React Native 现在终于支持 Android 感到非常兴奋。
但是,它不支持在 Windows 机器上进行开发,这会让人非常失望——在许多情况下,这会阻止大公司采用 React Native,因为大公司不能只改变他们的主要 OS.
我挖掘了一下,似乎不难得到它 运行 宁 Windows 无论如何。
在 react-native-cli
index.js
中从出生点更改为 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 上唯一缺少的最后一块是: 为什么开发服务器不工作 - 或者为什么应用程序不能连接到它?
我收到 "Unable to download JS Bundle..." 红屏死机。似乎 react-native run-android
未能启动它,即使它打印 Starting JS server...
。请参阅底部的完整输出。
有人可以帮忙解决这个问题吗?
谢谢
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
工作后尝试获取开发服务器 运行ning 的更多详细信息:
我试过了 - 但 `npm start' 失败了:
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 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 了,我只需要最后一点帮助就可以了。
请帮忙
更新:自 0.14 版(2015 年 10 月)起,Windows 由于社区的出色工作,开发成为可能(details)。
Windows 官方尚未支持,请参阅 Getting Started 上的文档。
我们希望尽快发布该版本,并首先关注 Mac OS。
社区中的人们让 React Native 在 Linux 上工作,并进行了一些最小的更改(我们将很快记录这些)并且看起来有人也刚刚在 Windows 上工作:
我通过安装 cygwin 和 运行 找到了修复它的方法:
cd package
sh package.sh
希望对大家有所帮助。
ReactWindows 添加了对 Windows 10 SDK 的支持,允许您为以下项目构建应用程序:
- Windows 10
- Windows 10 手机
- Xbox One (UWP)
- Windows 7 和 8.1 (WPF)