javascript - style - react-native-router-flux npm
¿React Native no es compatible con el desarrollo en Windows(todavía)? (3)
Creo que muchísimas personas están muy entusiasmadas con React Native, que finalmente también admite Android.
PERO habrá una gran decepción porque no es compatible con el desarrollo en máquinas con Windows, lo que en muchos casos evitará la adopción de React Native en empresas más grandes que no pueden simplemente cambiar su sistema operativo principal.
Excavé un poco y parece que no es difícil ejecutarlo en Windows de todos modos.
Cambie de spawn a requirejs.exec
en react-native-cli
index.js
siguiente manera:
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);
// }
//});
Este cambio me permite ejecutar react-native run-android
sin ningún error visible. Inicia el emulador y la aplicación.
La única pieza que falta para ejecutarlo en Windows es: ¿Por qué el servidor de desarrollo no funciona o por qué la aplicación no puede conectarse?
Obtengo la pantalla roja de la muerte "No se puede descargar JS Bundle ...". Parece que react-native run-android
no pudo iniciarlo, aunque imprime el Starting JS server...
Vea la salida completa en la parte inferior.
¿Alguien por ahí que puede ayudar a arreglar eso?
Gracias
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 }
ACTUALIZAR
Aquí hay algunos detalles más de lo que traté de ejecutar el servidor de desarrollo después de que react-native run-android
:
Intenté eso, pero `npm start ''falla con:
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
Luego probé react-native start
que falló así:
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
Luego probé el node node_modules/react-native/packager/packager.js
que en realidad funciona de la siguiente manera:
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)
Pero luego presiono Reload JS
en la pantalla roja de la muerte y después de unos 30 segundos o así falla nuevamente y la consola del servidor de desarrollo lo imprime y luego sale del servidor de desarrollo:
<--- 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
Creo que estamos tan cerca de hacerlo funcionar en Windows, solo necesito un poco de ayuda con las últimas piezas aquí.
Por favor ayuda
ACTUALIZACIÓN: A partir de la versión 0.14 (octubre de 2015), el desarrollo de Windows es posible ( details ) gracias al increíble trabajo de la comunidad.
Windows oficialmente aún no es compatible, consulte la documentación en Getting Started .
Queríamos sacar el lanzamiento lo antes posible y enfocarnos primero en Mac OS.
La gente de la comunidad consiguió React Native para trabajar en Linux con algunos cambios mínimos (los documentaremos pronto) y parece que alguien también lo hizo trabajando en Windows:
Encontré una manera de solucionarlo instalando cygwin y ejecutando: cd package sh package.sh
Espero que esto ayude a alguien.
ReactWindows agrega soporte para Windows 10 SDK, que le permite crear aplicaciones para:
- Windows 10
- Windows 10 Mobile
- Xbox One (UWP)
- Windows 7 y 8.1 (WPF)