mjmeintjes / boot-react-native Goto Github PK
View Code? Open in Web Editor NEWBetter development experience with ClojureScript and React Native
Better development experience with ClojureScript and React Native
Example app should work anywhere without having to make source code changes.
As the essay of the lisp curse predicts we already have some fragmentation in the very young CLJS RN space: re-natal vs boot-react-native. re-natal is clearly the most popular one if you judge from number of stars and forks here on GitHub. I am pretty sure that as RN usage grows in the CLJS community people are going to want to use boot since it seems to be very popular for the web/node. While the fragmentation between boot and lein are reasonable since they represent different philosophies I do not feel the same is true for re-natal vs boot-react-native and therefore I'd like to raise the question if these projects could be merged or that re-natal (seemingly being the most popular option) would add boot to the roadmap.
Same issue posted in re-natal: drapanjanas/re-natal#53
There are still issues with boot-reload
's "hud" display typically shown on reload. This is what I see when I change a file in SimpleExampleApp:
Jun 1 09:49:40 Pauluss-MacBook-Air SimpleExampleApp[10756]: createElement is faked - see goog/base.js
Jun 1 09:49:40 Pauluss-MacBook-Air SimpleExampleApp[10756]: undefined is not an object (evaluating 'element.style')
Jun 1 09:49:40 Pauluss-MacBook-Air SimpleExampleApp[10756]: Unhandled JS Exception: undefined is not an object (evaluating 'element.style')
I thought that this was fixed by adzerk-oss/boot-reload#58 but it doesn't look like it. I've tried bumping the boot-reload version in build.boot and setting disable-hud
, but both didn't work.
Not sure why has-dom?
in boot-reload doesn't appear to work.
Steps to reproduce:
react-native run-ios
Results in the error below
Reload Socket Error: [Object object]
With the example app, reloading doesn't work. I see:
Jun 16 16:12:14 Pauluss-MacBook-Air SimpleExampleApp[18993]: Reload
Jun 16 16:12:14 Pauluss-MacBook-Air SimpleExampleApp[18993]: main.out/node_modules/mattsum.simple_example.core.js
Jun 16 16:12:14 Pauluss-MacBook-Air SimpleExampleApp[18993]: main.out/node_modules/mattsum.simple_example.core.js.map
Jun 16 16:12:14 Pauluss-MacBook-Air SimpleExampleApp[18993]: main.out/mattsum/simple_example/core.cljs
Jun 16 16:12:14 Pauluss-MacBook-Air SimpleExampleApp[18993]: main.out/node_modules/mattsum.simple_example.core.cljs
Jun 16 16:12:14 Pauluss-MacBook-Air SimpleExampleApp[18993]: main.out/mattsum/simple_example/core.js.map
Jun 16 16:12:14 Pauluss-MacBook-Air SimpleExampleApp[18993]: main.out/mattsum/simple_example/core.js
Jun 16 16:12:14 Pauluss-MacBook-Air SimpleExampleApp[18993]:
Jun 16 16:12:14 Pauluss-MacBook-Air SimpleExampleApp[18993]:
Jun 16 16:12:14 Pauluss-MacBook-Air SimpleExampleApp[18993]: ERROR
Jun 16 16:12:14 Pauluss-MacBook-Air SimpleExampleApp[18993]: expected: (= 1 2)
Jun 16 16:12:14 Pauluss-MacBook-Air SimpleExampleApp[18993]: actual: (not (= 1 2))
Jun 16 16:12:14 Pauluss-MacBook-Air SimpleExampleApp[18993]:
Jun 16 16:12:14 Pauluss-MacBook-Air SimpleExampleApp[18993]: 1 failures, 0 errors.
Jun 16 16:12:14 Pauluss-MacBook-Air SimpleExampleApp[18993]: JS RELOADING
so it looks like it's reloading things, but changing actual code (e.g. adding log messages) doesn't have any effect. I've tried multiple boot-reload versions, but they all don't work.
A lot of new changes and upgrades have been made to boot-react-native, especially on the iOS side.
With facebook/react-native#5119, it should be possible to build and run an app in the iOS simulator directly, without opening xcode (I think this was supported for android earlier). Might be a nice idea to add support or documentation for this.
After upgrading to RN 0.31.0 boot-reload and cljs-repl no longer work.
When you require an image like so
(def arrow (js/require "../../imgs/arrow.png"))
it works on first load but fails when the code is reevaluated from boot-reload
with a packager error (red screen of death). Similar problems have been reported with requiring regular react-native/node dependencies
(def animatable (js/require "react-native-animatable/index.js"))
A workaround is to use defonce
.
Also worth mentioning that if you use Google Closure (cljs with advanced or possibly even simple compilation), you'll also need to set a javascript var, like so:
(aset js/global "Animatable" (js/require "react-native-animatable/index.js"))
In any case it would be great not to need the defonce
workaround. Is this because of path issues, i.e. relative paths resolve to different directories in "first-run" and "reload" modes?
Would be great to have a leiningen template to get started quickly. Currently you would have to copy the example and edit namespaces/folders to taste.
It would be useful to have a dependencies
boot task that verifies that external dependencies are present.
For SimpleExampleApp:
npm install
in app/
if it hasn't been run beforenpm
and node
are recent enoughThis could be optimized by adding a file that is updated with the content hash of package.json
if npm install
succeeds. Then checking if npm install
needs to be re-run would be as simple as comparing the hash to the file.
I've implemented this successfully before. Do you think this would be useful as part of the example app? It would be a step towards boot dev
being a single-command dev environment.
Add an example of using an image to SimpleExampleApp, as the process is not obvious.
the function fakeLocalStorageAndDocument
Thanks for the great work you've done with source maps!
I noticed that get almost a full screens worth of "Generating sourcemap for ..." messages. I've been doing a lot of scrolling to see my debug logging statements in development. Do you think it's a good idea to condense the source map logs down into one log line?
In dev mode, the log shows messages relating to dist.cljs.edn
:
Writing cljs-template to shim_browser_repl_bootstrap.cljs...
Found edn files - (#boot.tmpdir.TmpFile{:dir #object[java.io.File 0x55977d65 /Users/pe/.boot/cache/tmp/Users/pe/fy/boot-react-native/example/yl3/f0sqpx], :bdir #object[java.io.File 0x468ca3bc /Users/pe/.boot/cache/tmp/Users/pe/fy/boot-react-native/example/yl3/-7kd6cy], :path dist.cljs.edn, :id cf1af63da345e0a558455fc6de495f46.1469873907000, :hash cf1af63da345e0a558455fc6de495f46, :time 1469873907000})
Adding :require mattsum.boot-react-native.shim-browser-repl-bootstrap to dist.cljs.edn...
Writing cljs-template to shim_boot_reload.cljs...
Found edn files - (#boot.tmpdir.TmpFile{:dir #object[java.io.File 0x55977d65 /Users/pe/.boot/cache/tmp/Users/pe/fy/boot-react-native/example/yl3/f0sqpx], :bdir #object[java.io.File 0x468ca3bc /Users/pe/.boot/cache/tmp/Users/pe/fy/boot-react-native/example/yl3/-7kd6cy], :path dist.cljs.edn, :id 9085f304b56696c493776ef586672b32.1469874282000, :hash 9085f304b56696c493776ef586672b32, :time 1469874282000})
Adding :require mattsum.boot-react-native.shim-boot-reload to dist.cljs.edn...
Writing cljs-template to shim_repl_print.cljs...
Found edn files - (#boot.tmpdir.TmpFile{:dir #object[java.io.File 0x55977d65 /Users/pe/.boot/cache/tmp/Users/pe/fy/boot-react-native/example/yl3/f0sqpx], :bdir #object[java.io.File 0x468ca3bc /Users/pe/.boot/cache/tmp/Users/pe/fy/boot-react-native/example/yl3/-7kd6cy], :path dist.cljs.edn, :id fefe467f1dd7d7123e7008c6446d3b3f.1469874282000, :hash fefe467f1dd7d7123e7008c6446d3b3f, :time 1469874282000})
Adding :require mattsum.boot-react-native.shim-repl-print to dist.cljs.edn...
Adding :require adzerk.boot-cljs-repl to dist.cljs.edn...
Writing main.cljs.edn...
But it should only work with main.cljs.edn
.
boot dev
shows:
Starting reload server on ws://localhost:8079
Writing adzerk/boot_reload/init2372.cljs to connect to ws://localhost:8079...
Writing boot_cljs_repl.cljs...
clojure.lang.ExceptionInfo: java.lang.IllegalArgumentException: Cannot open as a Reader.
data: {:file "/tmp/boot.user8910946252566361795.clj", :line 19}
java.util.concurrent.ExecutionException: java.lang.IllegalArgumentException: Cannot open as a Reader.
java.lang.IllegalArgumentException: Cannot open as a Reader.
clojure.java.io/fn/invokeStatic io.clj: 288
clojure.java.io/fn io.clj: 288
clojure.java.io/fn/G io.clj: 69
clojure.java.io/reader/invokeStatic io.clj: 102
clojure.java.io/reader io.clj: 86
...
clojure.core/apply/invokeStatic core.clj: 648
clojure.core/slurp/invokeStatic core.clj: 6657
clojure.core/slurp core.clj: 6657
...
mattsum.impl.boot-helpers/read-resource-/invokeStatic boot_helpers.clj: 15
mattsum.impl.boot-helpers/read-resource- boot_helpers.clj: 13
...
clojure.core/apply/invokeStatic core.clj: 646
clojure.core/memoize/fn core.clj: 6107
...
mattsum.impl.boot-helpers/write-resource-to-path/invokeStatic boot_helpers.clj: 88
mattsum.impl.boot-helpers/write-resource-to-path boot_helpers.clj: 83
mattsum.boot-react-native/eval2233/fn/fn/fn boot_react_native.clj: 304
boot.core/run-tasks core.clj: 794
boot.core/boot/fn core.clj: 804
clojure.core/binding-conveyor-fn/fn core.clj: 1938
Current master has been broken for a while. It'd be great to get master back to a working version again.
In my view, master should:
npm install
)My proposal would be to replace master with my branch, https://github.com/pesterhazy/boot-react-native/tree/develop. The branch is based on an earlier point in the repo history, before #46 was merged.
I've started creating issues so we can track the remaining problems with the develop branch, but I think it's progress in the right direction.
@mjmeintjes, what do you think? I'd love to see progress on this soon, as there's quite a bit of interest in BRN nowadays. I'd like to squash the commits in my branch and polish things a bit, but otherwise I think it's good to go (though would love to see more testing of course).
The example app is out of date:
See adzerk-oss/boot-reload#58. New features included in boot-reload means we can remove shim-boot-reload
.
With https://github.com/pesterhazy/boot-react-native/tree/develop, SimpleExampleApp reloading works again. However, if I make a change and then use Cmd+R in the simulator to reload completely, it take 30 seconds or more. This used work in <5 seconds.
Some observations:
DEBUG='ReactNativePackager:*' boot dev -pios
to get more debug output from the packager. It's painfully slow; on first startup it take up to 60 seconds on my laptop to build its dependency treeNeed to remove "app" as an "additional root"
Looking for JS files in
boot-react-native/example/app
boot-react-native/example/app
boot-react-native/example/app/build
With 0.3 in master, it'd be great to get some feedback and (maybe in a week) release 0.3 to clojars, unless we find any blocking issues.
Also a non-SNAPSHOT release would be great.
A curious issue: when I run boot dev
in my project, it ends ups starting vim
somewhere along the way. You can sort of see it, syntax highlighting and all. Compilation still works, but it scrolls only on half the screen in my terminal.
Obviously no interactive program should be launched during boot dev
.
I think it happens when there are warnings. Maybe it's the react packager
? Very mysterious.
This is in my own project, but don't see how anything specific of this project would cause this.
It works to fire up a REPL, but when one reloads the app the error Websocket REPL error: occupied
shows up.
To resolve this one has to restart the boot process.
It works on iOS and only seeing this issue on Android.
Full stack trace:
Websocket REPL error :occupied
reactConsoleError @ ExceptionsManager.js:76
console.error @ YellowBox.js:59
(anonymous function) @ weasel.repl.js:26
G__10840__2 @ cljs.core.js:33337
G__10840 @ cljs.core.js:33604
(anonymous function) @ weasel.repl.js:184
goog.events.EventTarget.fireListeners @ goog.events.EventTarget.js:284
goog.events.EventTarget.dispatchEventInternal_ @ goog.events.EventTarget.js:381
goog.events.EventTarget.dispatchEvent @ goog.events.EventTarget.js:196
goog.net.WebSocket.onMessage_ @ goog.net.WebSocket.js:426
dispatchEvent @ event-target.js:172
(anonymous function) @ WebSocket.js:168
emit @ EventEmitter.js:179
__callFunction @ MessageQueue.js:193
(anonymous function) @ MessageQueue.js:94
guard @ MessageQueue.js:41
callFunctionReturnFlushedQueue @ MessageQueue.js:93
onmessage @ debuggerWorker.js:39
I'm in the process of updating to the latest react-native, 0.26.2
. However, I'm running into issues, probably related to changes in the react native packager (again).
Here's what I see in our app:
Shimming window.location
goog.require could not find: cljs.core
Error while loading cljs.core
{ [Error: goog.require could not find: cljs.core]
line: 78203,
column: 16,
sourceURL: 'http://localhost:8081/index.ios.bundle?platform=ios&dev=true&hot=true' }
My guess is that the latest changes broke the BRN shims that enable goog.require
to work with the RN packager's require
fn.
We should bump the versions of core dependencies:
Hi!
Great project and great idea how to work with react-packager. Most of the people currently using https://github.com/decker405/figwheel-react-native implementation which loads Closure modules manually, eval it and then establish websocket connection with figwheel (doing eval once again for any new file).
The problem with this approach that we avoid native packager and for example cannot do simple require('react-native')
as packager replaces it with full path during file load, while with your approach there shouldn't be such problem, isn't it?
Question is - can we get nrepl support with your approach? I didn't fully understand how things work here, but if we can get nrepl support in a long run we should migrate to the your approach for working with React Native.
Thanks again for the great project
Travis CI recently added support for Java in its xcode images: travis-ci/travis-ci#2316 (comment)
We should use this for a simple integration test (incl. reloading)
Recent versions of RN require a patch to work with BRN; otherwise "goog.require could not find: cljs.core" is shown.
A task could automatically patch node_modules/react-native
as describe here.
Seeing this warning in the log for the example app on iOS:
Unbalanced calls start/end for tag 5
Doesn't seem to be harmful, but may indicate a deeper problem.
See also facebook/react-native#4163
When I updated to RN 0.39.0 my changes in the code are not visible anymore, this is probably the issue: facebook/react-native#11301
A possible solution would be to not have the compiled js files being written to node_modules
, not sure if that would affect other parts of the build system though.
Recent versions don't work for me anymore. When you retrieve the bundle, you get:
{"message":"Cannot find entry file index.ios.js in any of the roots: [\"/Users/pe/.boot/cache/tmp/Users/pe/fy/test/example/50r/-5f6t2\"]","name":"NotFoundError","type":"NotFoundError","status":404,"errors":[{}]}
I guess that's because of recent changes moving the build to the boot tempdir?
This is more of a question than an issue. How do you hack on the boot task (*.clj
or resources/*
) without building a new jar for every change? That seems a bit tedious. I wondered if boot's checkout task is useful (I'm hearing this will be improved in an upcoming version), or if it's possible to include the src
path directly in a (copy of?) the example app.
In https://github.com/pesterhazy/boot-react-native/tree/develop, source maps seem to be broken. Anytime there's an exception, I get a message in the logs:
[6:27:58 PM] <END> symbolicate (1140ms)
Error: Found a source and line, but no column
at SourceMapConsumer_parseMappings [as _parseMappings] (/Users/pe/fy/boot-react-native/example/app/node_modules/source-map/lib/source-map/source-map-consumer.js:473:21)
at SourceMapConsumer.Object.defineProperty.get (/Users/pe/fy/boot-react-native/example/app/node_modules/source-map/lib/source-map/source-map-consumer.js:72:14)
at SourceMapConsumer_originalPositionFor [as originalPositionFor] (/Users/pe/fy/boot-react-native/example/app/node_modules/source-map/lib/source-map/source-map-consumer.js:599:13)
at SourceMapConsumer.IndexedSourceMapConsumer_originalPositionFor [as originalPositionFor] (/Users/pe/fy/boot-react-native/example/app/node_modules/source-map/lib/source-map/source-map-consumer.js:932:31)
at /Users/pe/fy/boot-react-native/example/app/node_modules/react-native/packager/react-packager/src/Server/index.js:481:37
at Array.map (native)
at /Users/pe/fy/boot-react-native/example/app/node_modules/react-native/packager/react-packager/src/Server/index.js:474:22
at tryCallOne (/Users/pe/fy/boot-react-native/example/app/node_modules/promise/lib/core.js:37:12)
at /Users/pe/fy/boot-react-native/example/app/node_modules/promise/lib/core.js:123:15
at flush (/Users/pe/fy/boot-react-native/example/app/node_modules/asap/raw.js:50:29)
As a result I disabled cljs-rn-transformer.js in the branch temporarily, but it'd be nice to get it back.
Since the output of CLJS is already ES3 it is unnecessary to transpile those files with babel. In addition this caused very long npm transform times for us. We solved it by adding a .babelrc
file to the app folder. Should I submit a PR with that to this example repo as well?
@pesterhazy helped me get past all of this and asked if I'd write up some of the roadblocks as an issue, so here goes.
Following the guidance here http://presumably.de/boot-react-native.html
npm install - worked fine
npm start - this isn't in the blog post, but @pesterhazy suggested that it should be.
boot dev - worked fine
react-native run-ios - build error
The following build commands failed:
CompileC /Users/keith/src/example/app/ios/build/Build/Intermediates/RCTWebSocket.build/Debug-iphonesimulator/RCTWebSocket.build/Objects-normal/x86_64/RCTSRWebSocket.o RCTSRWebSocket.m normal x86_64 objective-c com.apple.compilers.llvm.clang.1_0.compiler
(1 failure)
/Users/keith/src/example/app/node_modules/promise/lib/done.js:10
throw err;
^
@pesterhazy suggested I scroll back to find the source of the error, and indeed, I found this:
/Users/keith/src/example/app/node_modules/react-native/Libraries/WebSocket/RCTSRWebSocket.m:494:3: error: ignoring return value of function declared with warn_unused_result attribute [-Werror,-Wunused-result]
SecRandomCopyBytes(kSecRandomDefault, keyBytes.length, keyBytes.mutableBytes);
^~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/Users/keith/src/example/app/node_modules/react-native/Libraries/WebSocket/RCTSRWebSocket.m:1334:5: error: ignoring return value of function declared with warn_unused_result attribute [-Werror,-Wunused-result]
SecRandomCopyBytes(kSecRandomDefault, sizeof(uint32_t), (uint8_t *)mask_key);
^~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2 errors generated.
@pesterhazy thought this problem might be because in XCode 8, Apple upgraded what used to be a warning into an error. He suggested updating to react-native 0.33. I ended up having to also upgrade react-native and react-dom. I changed the "dependencies" section of example/app/package.json from this
"dependencies": {
"react": "15.2.1",
"react-dom": "15.2.1",
"react-native": "0.30.0"
}
to this (note all three dependencies changed):
"dependencies": {
"react": "15.3.1",
"react-dom": "15.3.1",
"react-native": "0.33.0"
}
...and reran npm install, after shutting everything down.
So let's try again:
boot dev (which patched the new react-native)
npm start
react-native run-ios
Build succeeded, and the simulator flashes "SimpleExampleApp" briefly but then stays blank white for a pretty long time. Eventually it turns red complaining that it can't connect to the dev server. The URL it tries to use to get the bundle looked like this:
http://localhost:8081/index.ios.bundle?platform=ios&dev=true&minify=false
While all this was happening I noticed the package manager was still in its "find dependencies" phase. That took almost two minutes to complete - I finally saw an find dependencies after waiting awhile. During that time I wasn't able to access the URL above with a browser, but it seems like after that was done, I was able to see javascript returned from it.
After that, pressing cmd-R a couple times to refresh the simulator got things working, and I was happy to see "Welcome to boot-react-native" with a button at the bottom that when I clicked it, the number increased, as advertised.
Hope this is helpful!
There's a couple of ways in which the docs currently fall short.
After discussions with @pesterhazy the packager task should be removed from the example.
I'm trying to follow the README for the example app. I assume fast-build
should be dev
. If I run boot dev
I get the folowing stack trace:
Starting reload server on ws://localhost:8079
Writing boot_reload.cljs...
Writing boot_cljs_repl.cljs...
cljs: unknown option(s): :main
Reading resource - mattsum/boot_rn/js/cljs-rn-transformer.js
Writing mattsum/boot_rn/js/cljs-rn-transformer.js to #<File /Users/duncan/.boot/cache/tmp/Users/duncan/src/boot-react-native/example/4cu/-id7wfi/transformer/cljs-rn-transformer.js>
Starting file watcher (CTRL-C to quit)...
Writing cljs-template to shim_browser_repl_bootstrap.cljs...
Found edn files - ()
Writing cljs-template to shim_boot_reload.cljs...
Found edn files - ()
Writing cljs-template to shim_repl_print.cljs...
Found edn files - ()
clojure.lang.Compiler$CompilerException: java.io.FileNotFoundException: Could not locate cljs/repl__init.class or cljs/repl.clj on classpath: , compiling:(cemerick/piggieback.clj:1:1)
java.io.FileNotFoundException: Could not locate cljs/repl__init.class or cljs/repl.clj on classpath:
...
clojure.core/load/fn core.clj: 5641
clojure.core/load core.clj: 5640
...
clojure.core/load-one core.clj: 5446
clojure.core/load-lib/fn core.clj: 5486
clojure.core/load-lib core.clj: 5485
...
clojure.core/apply core.clj: 626
clojure.core/load-libs core.clj: 5524
...
clojure.core/apply core.clj: 626
clojure.core/require core.clj: 5607
...
cemerick.piggieback/eval3460/loading--auto-- piggieback.clj: 1
cemerick.piggieback/eval3460 piggieback.clj: 1
...
clojure.core/load/fn core.clj: 5641
clojure.core/load core.clj: 5640
...
clojure.core/load-one core.clj: 5446
clojure.core/load-lib/fn core.clj: 5486
clojure.core/load-lib core.clj: 5485
...
clojure.core/apply core.clj: 626
clojure.core/load-libs core.clj: 5524
...
clojure.core/apply core.clj: 626
clojure.core/require core.clj: 5607
...
boot.repl-server/->var repl_server.clj: 52
boot.repl-server/->mw-list repl_server.clj: 58
clojure.core/map/fn core.clj: 2557
...
clojure.core/seq core.clj: 133
clojure.core/apply core.clj: 624
clojure.core/mapcat core.clj: 2586
...
boot.repl-server/->mw-list repl_server.clj: 62
boot.repl-server/start-server repl_server.clj: 70
boot.repl/launch-nrepl repl.clj: 51
boot.core/launch-nrepl core.clj: 1053
...
clojure.core/apply core.clj: 624
boot.task.built-in/fn/fn/fn built_in.clj: 308
...
clojure.core/deref core.clj: 2200
boot.task.built-in/fn/fn/fn/fn built_in.clj: 311
mattsum.boot-react-native/eval2124/fn/fn/fn boot_react_native.clj: 157
mattsum.boot-react-native/eval2090/fn/fn/fn boot_react_native.clj: 135
mattsum.boot-react-native/eval2275/fn/fn/fn boot_react_native.clj: 241
adzerk.boot-reload/eval461/fn/fn/fn/fn boot_reload.clj: 120
adzerk.boot-reload/eval461/fn/fn/fn boot_reload.clj: 119
boot.task.built-in/fn/fn/fn/fn/fn/fn built_in.clj: 264
boot.task.built-in/fn/fn/fn/fn/fn built_in.clj: 264
boot.task.built-in/fn/fn/fn/fn built_in.clj: 261
boot.core/run-tasks core.clj: 794
boot.core/boot/fn core.clj: 804
clojure.core/binding-conveyor-fn/fn core.clj: 1910
...
Elapsed time: 1.587 sec
As reported by @pesterhazy in #6 (comment)
error log in the chrome debugger:
Running application "SimpleExampleApp" with appParams: {"rootTag":1,"initialProps":{}}. __DEV__ === true, development-level warning are ON, performance optimizations are OFF
index.ios.bundle?platform=ios&dev=true:50715 Not shimming window.location - location already set to http://localhost:8081/debuggerWorker.js
index.ios.bundle?platform=ios&dev=true:50715 Error while loading goog.i18n.bidi.Dir
index.ios.bundle?platform=ios&dev=true:6206 TypeError: Cannot read property 'substring' of undefined(…)reactConsoleError @ index.ios.bundle?platform=ios&dev=true:6206console.error @ index.ios.bundle?platform=ios&dev=true:50707global.console.(anonymous function) @ index.ios.bundle?platform=ios&dev=true:1288goog.require @ index.ios.bundle?platform=ios&dev=true:60014(anonymous function) @ index.ios.bundle?platform=ios&dev=true:105229requireImpl @ index.ios.bundle?platform=ios&dev=true:66require @ index.ios.bundle?platform=ios&dev=true:26goog.require @ index.ios.bundle?platform=ios&dev=true:60011(anonymous function) @ index.ios.bundle?platform=ios&dev=true:103452requireImpl @ index.ios.bundle?platform=ios&dev=true:66require @ index.ios.bundle?platform=ios&dev=true:26goog.require @ index.ios.bundle?platform=ios&dev=true:60011(anonymous function) @ index.ios.bundle?platform=ios&dev=true:103113requireImpl @ index.ios.bundle?platform=ios&dev=true:66require @ index.ios.bundle?platform=ios&dev=true:26goog.require @ index.ios.bundle?platform=ios&dev=true:60011(anonymous function) @ index.ios.bundle?platform=ios&dev=true:98458requireImpl @ index.ios.bundle?platform=ios&dev=true:66require @ index.ios.bundle?platform=ios&dev=true:26goog.require @ index.ios.bundle?platform=ios&dev=true:60011(anonymous function) @ index.ios.bundle?platform=ios&dev=true:98182requireImpl @ index.ios.bundle?platform=ios&dev=true:66require @ index.ios.bundle?platform=ios&dev=true:26goog.require @ index.ios.bundle?platform=ios&dev=true:60011(anonymous function) @ index.ios.bundle?platform=ios&dev=true:98160requireImpl @ index.ios.bundle?platform=ios&dev=true:66require @ index.ios.bundle?platform=ios&dev=true:26goog.require @ index.ios.bundle?platform=ios&dev=true:60011(anonymous function) @ index.ios.bundle?platform=ios&dev=true:60049requireImpl @ index.ios.bundle?platform=ios&dev=true:66require @ index.ios.bundle?platform=ios&dev=true:26(anonymous function) @ index.ios.bundle?platform=ios&dev=true:57429requireImpl @ index.ios.bundle?platform=ios&dev=true:66requireImpl @ index.ios.bundle?platform=ios&dev=true:34require @ index.ios.bundle?platform=ios&dev=true:26(anonymous function) @ index.ios.bundle?platform=ios&dev=true:1299JSTimersExecution.callbacks.(anonymous function) @ index.ios.bundle?platform=ios&dev=true:3678JSTimersExecution.callTimer @ index.ios.bundle?platform=ios&dev=true:3298JSTimersExecution.callTimers @ index.ios.bundle?platform=ios&dev=true:3321__callFunction @ index.ios.bundle?platform=ios&dev=true:2727(anonymous function) @ index.ios.bundle?platform=ios&dev=true:2633guard @ index.ios.bundle?platform=ios&dev=true:2589callFunctionReturnFlushedQueue @ index.ios.bundle?platform=ios&dev=true:2632onmessage @ debuggerWorker.js:39
index.ios.bundle?platform=ios&dev=true:50715 Error while loading goog.i18n.bidi.DirectionalString
index.ios.bundle?platform=ios&dev=true:6206 TypeError: Cannot read property 'substring' of undefined(…)reactConsoleError @ index.ios.bundle?platform=ios&dev=true:6206console.error @ index.ios.bundle?platform=ios&dev=true:50707global.console.(anonymous function) @ index.ios.bundle?platform=ios&dev=true:1288goog.require @ index.ios.bundle?platform=ios&dev=true:60014(anonymous function) @ index.ios.bundle?platform=ios&dev=true:105230requireImpl @ index.ios.bundle?platform=ios&dev=true:66require @ index.ios.bundle?platform=ios&dev=true:26goog.require @ index.ios.bundle?platform=ios&dev=true:60011(anonymous function) @ index.ios.bundle?platform=ios&dev=true:103452requireImpl @ index.ios.bundle?platform=ios&dev=true:66require @ index.ios.bundle?platform=ios&dev=true:26goog.require @ index.ios.bundle?platform=ios&dev=true:60011(anonymous function) @ index.ios.bundle?platform=ios&dev=true:103113requireImpl @ index.ios.bundle?platform=ios&dev=true:66require @ index.ios.bundle?platform=ios&dev=true:26goog.require @ index.ios.bundle?platform=ios&dev=true:60011(anonymous function) @ index.ios.bundle?platform=ios&dev=true:98458requireImpl @ index.ios.bundle?platform=ios&dev=true:66require @ index.ios.bundle?platform=ios&dev=true:26goog.require @ index.ios.bundle?platform=ios&dev=true:60011(anonymous function) @ index.ios.bundle?platform=ios&dev=true:98182requireImpl @ index.ios.bundle?platform=ios&dev=true:66require @ index.ios.bundle?platform=ios&dev=true:26goog.require @ index.ios.bundle?platform=ios&dev=true:60011(anonymous function) @ index.ios.bundle?platform=ios&dev=true:98160requireImpl @ index.ios.bundle?platform=ios&dev=true:66require @ index.ios.bundle?platform=ios&dev=true:26goog.require @ index.ios.bundle?platform=ios&dev=true:60011(anonymous function) @ index.ios.bundle?platform=ios&dev=true:60049requireImpl @ index.ios.bundle?platform=ios&dev=true:66require @ index.ios.bundle?platform=ios&dev=true:26(anonymous function) @ index.ios.bundle?platform=ios&dev=true:57429requireImpl @ index.ios.bundle?platform=ios&dev=true:66requireImpl @ index.ios.bundle?platform=ios&dev=true:34require @ index.ios.bundle?platform=ios&dev=true:26(anonymous function) @ index.ios.bundle?platform=ios&dev=true:1299JSTimersExecution.callbacks.(anonymous function) @ index.ios.bundle?platform=ios&dev=true:3678JSTimersExecution.callTimer @ index.ios.bundle?platform=ios&dev=true:3298JSTimersExecution.callTimers @ index.ios.bundle?platform=ios&dev=true:3321__callFunction @ index.ios.bundle?platform=ios&dev=true:2727(anonymous function) @ index.ios.bundle?platform=ios&dev=true:2633guard @ index.ios.bundle?platform=ios&dev=true:2589callFunctionReturnFlushedQueue @ index.ios.bundle?platform=ios&dev=true:2632onmessage @ debuggerWorker.js:39
index.ios.bundle?platform=ios&dev=true:50715 Error while loading goog.i18n.bidi.Dir
index.ios.bundle?platform=ios&dev=true:6206 Error: Requiring module "goog.i18n.bidi.Dir" which threw an exception(…)reactConsoleError @ index.ios.bundle?platform=ios&dev=true:6206console.error @ index.ios.bundle?platform=ios&dev=true:50707global.console.(anonymous function) @ index.ios.bundle?platform=ios&dev=true:1288goog.require @ index.ios.bundle?platform=ios&dev=true:60014(anonymous function) @ index.ios.bundle?platform=ios&dev=true:107575requireImpl @ index.ios.bundle?platform=ios&dev=true:66require @ index.ios.bundle?platform=ios&dev=true:26goog.require @ index.ios.bundle?platform=ios&dev=true:60011(anonymous function) @ index.ios.bundle?platform=ios&dev=true:103453requireImpl @ index.ios.bundle?platform=ios&dev=true:66require @ index.ios.bundle?platform=ios&dev=true:26goog.require @ index.ios.bundle?platform=ios&dev=true:60011(anonymous function) @ index.ios.bundle?platform=ios&dev=true:103113requireImpl @ index.ios.bundle?platform=ios&dev=true:66require @ index.ios.bundle?platform=ios&dev=true:26goog.require @ index.ios.bundle?platform=ios&dev=true:60011(anonymous function) @ index.ios.bundle?platform=ios&dev=true:98458requireImpl @ index.ios.bundle?platform=ios&dev=true:66require @ index.ios.bundle?platform=ios&dev=true:26goog.require @ index.ios.bundle?platform=ios&dev=true:60011(anonymous function) @ index.ios.bundle?platform=ios&dev=true:98182requireImpl @ index.ios.bundle?platform=ios&dev=true:66require @ index.ios.bundle?platform=ios&dev=true:26goog.require @ index.ios.bundle?platform=ios&dev=true:60011(anonymous function) @ index.ios.bundle?platform=ios&dev=true:98160requireImpl @ index.ios.bundle?platform=ios&dev=true:66require @ index.ios.bundle?platform=ios&dev=true:26goog.require @ index.ios.bundle?platform=ios&dev=true:60011(anonymous function) @ index.ios.bundle?platform=ios&dev=true:60049requireImpl @ index.ios.bundle?platform=ios&dev=true:66require @ index.ios.bundle?platform=ios&dev=true:26(anonymous function) @ index.ios.bundle?platform=ios&dev=true:57429requireImpl @ index.ios.bundle?platform=ios&dev=true:66requireImpl @ index.ios.bundle?platform=ios&dev=true:34require @ index.ios.bundle?platform=ios&dev=true:26(anonymous function) @ index.ios.bundle?platform=ios&dev=true:1299JSTimersExecution.callbacks.(anonymous function) @ index.ios.bundle?platform=ios&dev=true:3678JSTimersExecution.callTimer @ index.ios.bundle?platform=ios&dev=true:3298JSTimersExecution.callTimers @ index.ios.bundle?platform=ios&dev=true:3321__callFunction @ index.ios.bundle?platform=ios&dev=true:2727(anonymous function) @ index.ios.bundle?platform=ios&dev=true:2633guard @ index.ios.bundle?platform=ios&dev=true:2589callFunctionReturnFlushedQueue @ index.ios.bundle?platform=ios&dev=true:2632onmessage @ debuggerWorker.js:39
index.ios.bundle?platform=ios&dev=true:50715 Error while loading goog.i18n.bidi.DirectionalString
index.ios.bundle?platform=ios&dev=true:6206 Error: Requiring module "goog.i18n.bidi.DirectionalString" which threw an exception(…)reactConsoleError @ index.ios.bundle?platform=ios&dev=true:6206console.error @ index.ios.bundle?platform=ios&dev=true:50707global.console.(anonymous function) @ index.ios.bundle?platform=ios&dev=true:1288goog.require @ index.ios.bundle?platform=ios&dev=true:60014(anonymous function) @ index.ios.bundle?platform=ios&dev=true:107576requireImpl @ index.ios.bundle?platform=ios&dev=true:66require @ index.ios.bundle?platform=ios&dev=true:26goog.require @ index.ios.bundle?platform=ios&dev=true:60011(anonymous function) @ index.ios.bundle?platform=ios&dev=true:103453requireImpl @ index.ios.bundle?platform=ios&dev=true:66require @ index.ios.bundle?platform=ios&dev=true:26goog.require @ index.ios.bundle?platform=ios&dev=true:60011(anonymous function) @ index.ios.bundle?platform=ios&dev=true:103113requireImpl @ index.ios.bundle?platform=ios&dev=true:66require @ index.ios.bundle?platform=ios&dev=true:26goog.require @ index.ios.bundle?platform=ios&dev=true:60011(anonymous function) @ index.ios.bundle?platform=ios&dev=true:98458requireImpl @ index.ios.bundle?platform=ios&dev=true:66require @ index.ios.bundle?platform=ios&dev=true:26goog.require @ index.ios.bundle?platform=ios&dev=true:60011(anonymous function) @ index.ios.bundle?platform=ios&dev=true:98182requireImpl @ index.ios.bundle?platform=ios&dev=true:66require @ index.ios.bundle?platform=ios&dev=true:26goog.require @ index.ios.bundle?platform=ios&dev=true:60011(anonymous function) @ index.ios.bundle?platform=ios&dev=true:98160requireImpl @ index.ios.bundle?platform=ios&dev=true:66require @ index.ios.bundle?platform=ios&dev=true:26goog.require @ index.ios.bundle?platform=ios&dev=true:60011(anonymous function) @ index.ios.bundle?platform=ios&dev=true:60049requireImpl @ index.ios.bundle?platform=ios&dev=true:66require @ index.ios.bundle?platform=ios&dev=true:26(anonymous function) @ index.ios.bundle?platform=ios&dev=true:57429requireImpl @ index.ios.bundle?platform=ios&dev=true:66requireImpl @ index.ios.bundle?platform=ios&dev=true:34require @ index.ios.bundle?platform=ios&dev=true:26(anonymous function) @ index.ios.bundle?platform=ios&dev=true:1299JSTimersExecution.callbacks.(anonymous function) @ index.ios.bundle?platform=ios&dev=true:3678JSTimersExecution.callTimer @ index.ios.bundle?platform=ios&dev=true:3298JSTimersExecution.callTimers @ index.ios.bundle?platform=ios&dev=true:3321__callFunction @ index.ios.bundle?platform=ios&dev=true:2727(anonymous function) @ index.ios.bundle?platform=ios&dev=true:2633guard @ index.ios.bundle?platform=ios&dev=true:2589callFunctionReturnFlushedQueue @ index.ios.bundle?platform=ios&dev=true:2632onmessage @ debuggerWorker.js:39
index.ios.bundle?platform=ios&dev=true:50715 Error while loading goog.i18n.bidi.Dir
index.ios.bundle?platform=ios&dev=true:6206 Error: Requiring module "goog.i18n.bidi.Dir" which threw an exception(…)reactConsoleError @ index.ios.bundle?platform=ios&dev=true:6206console.error @ index.ios.bundle?platform=ios&dev=true:50707global.console.(anonymous function) @ index.ios.bundle?platform=ios&dev=true:1288goog.require @ index.ios.bundle?platform=ios&dev=true:60014(anonymous function) @ index.ios.bundle?platform=ios&dev=true:103454requireImpl @ index.ios.bundle?platform=ios&dev=true:66require @ index.ios.bundle?platform=ios&dev=true:26goog.require @ index.ios.bundle?platform=ios&dev=true:60011(anonymous function) @ index.ios.bundle?platform=ios&dev=true:103113requireImpl @ index.ios.bundle?platform=ios&dev=true:66require @ index.ios.bundle?platform=ios&dev=true:26goog.require @ index.ios.bundle?platform=ios&dev=true:60011(anonymous function) @ index.ios.bundle?platform=ios&dev=true:98458requireImpl @ index.ios.bundle?platform=ios&dev=true:66require @ index.ios.bundle?platform=ios&dev=true:26goog.require @ index.ios.bundle?platform=ios&dev=true:60011(anonymous function) @ index.ios.bundle?platform=ios&dev=true:98182requireImpl @ index.ios.bundle?platform=ios&dev=true:66require @ index.ios.bundle?platform=ios&dev=true:26goog.require @ index.ios.bundle?platform=ios&dev=true:60011(anonymous function) @ index.ios.bundle?platform=ios&dev=true:98160requireImpl @ index.ios.bundle?platform=ios&dev=true:66require @ index.ios.bundle?platform=ios&dev=true:26goog.require @ index.ios.bundle?platform=ios&dev=true:60011(anonymous function) @ index.ios.bundle?platform=ios&dev=true:60049requireImpl @ index.ios.bundle?platform=ios&dev=true:66require @ index.ios.bundle?platform=ios&dev=true:26(anonymous function) @ index.ios.bundle?platform=ios&dev=true:57429requireImpl @ index.ios.bundle?platform=ios&dev=true:66requireImpl @ index.ios.bundle?platform=ios&dev=true:34require @ index.ios.bundle?platform=ios&dev=true:26(anonymous function) @ index.ios.bundle?platform=ios&dev=true:1299JSTimersExecution.callbacks.(anonymous function) @ index.ios.bundle?platform=ios&dev=true:3678JSTimersExecution.callTimer @ index.ios.bundle?platform=ios&dev=true:3298JSTimersExecution.callTimers @ index.ios.bundle?platform=ios&dev=true:3321__callFunction @ index.ios.bundle?platform=ios&dev=true:2727(anonymous function) @ index.ios.bundle?platform=ios&dev=true:2633guard @ index.ios.bundle?platform=ios&dev=true:2589callFunctionReturnFlushedQueue @ index.ios.bundle?platform=ios&dev=true:2632onmessage @ debuggerWorker.js:39
index.ios.bundle?platform=ios&dev=true:50715 Error while loading goog.i18n.bidi.DirectionalString
index.ios.bundle?platform=ios&dev=true:6206 Error: Requiring module "goog.i18n.bidi.DirectionalString" which threw an exception(…)reactConsoleError @ index.ios.bundle?platform=ios&dev=true:6206console.error @ index.ios.bundle?platform=ios&dev=true:50707global.console.(anonymous function) @ index.ios.bundle?platform=ios&dev=true:1288goog.require @ index.ios.bundle?platform=ios&dev=true:60014(anonymous function) @ index.ios.bundle?platform=ios&dev=true:103455requireImpl @ index.ios.bundle?platform=ios&dev=true:66require @ index.ios.bundle?platform=ios&dev=true:26goog.require @ index.ios.bundle?platform=ios&dev=true:60011(anonymous function) @ index.ios.bundle?platform=ios&dev=true:103113requireImpl @ index.ios.bundle?platform=ios&dev=true:66require @ index.ios.bundle?platform=ios&dev=true:26goog.require @ index.ios.bundle?platform=ios&dev=true:60011(anonymous function) @ index.ios.bundle?platform=ios&dev=true:98458requireImpl @ index.ios.bundle?platform=ios&dev=true:66require @ index.ios.bundle?platform=ios&dev=true:26goog.require @ index.ios.bundle?platform=ios&dev=true:60011(anonymous function) @ index.ios.bundle?platform=ios&dev=true:98182requireImpl @ index.ios.bundle?platform=ios&dev=true:66require @ index.ios.bundle?platform=ios&dev=true:26goog.require @ index.ios.bundle?platform=ios&dev=true:60011(anonymous function) @ index.ios.bundle?platform=ios&dev=true:98160requireImpl @ index.ios.bundle?platform=ios&dev=true:66require @ index.ios.bundle?platform=ios&dev=true:26goog.require @ index.ios.bundle?platform=ios&dev=true:60011(anonymous function) @ index.ios.bundle?platform=ios&dev=true:60049requireImpl @ index.ios.bundle?platform=ios&dev=true:66require @ index.ios.bundle?platform=ios&dev=true:26(anonymous function) @ index.ios.bundle?platform=ios&dev=true:57429requireImpl @ index.ios.bundle?platform=ios&dev=true:66requireImpl @ index.ios.bundle?platform=ios&dev=true:34require @ index.ios.bundle?platform=ios&dev=true:26(anonymous function) @ index.ios.bundle?platform=ios&dev=true:1299JSTimersExecution.callbacks.(anonymous function) @ index.ios.bundle?platform=ios&dev=true:3678JSTimersExecution.callTimer @ index.ios.bundle?platform=ios&dev=true:3298JSTimersExecution.callTimers @ index.ios.bundle?platform=ios&dev=true:3321__callFunction @ index.ios.bundle?platform=ios&dev=true:2727(anonymous function) @ index.ios.bundle?platform=ios&dev=true:2633guard @ index.ios.bundle?platform=ios&dev=true:2589callFunctionReturnFlushedQueue @ index.ios.bundle?platform=ios&dev=true:2632onmessage @ debuggerWorker.js:39
index.ios.bundle?platform=ios&dev=true:1288 Starting shim setup
index.ios.bundle?platform=ios&dev=true:1288 Shimming goog functions.
index.ios.bundle?platform=ios&dev=true:1288 Done shimming
In order for source maps to work for reloaded content, the source map needs to be included as base64 encoded text in js file (http://stackoverflow.com/questions/14375567/getting-source-maps-working-with-evaluated-code).
Should be easy - need to change (update-sourcemap-url) and getSourceMapModuleName.
Source maps are not currently being picked up correctly.
https://github.com/mjmeintjes/boot-react-native/blob/master/resources/mattsum/boot_rn/js/cljs-rn-transformer.js#L19
RN might be expecting source map contents instead of file name?
When using boot-react-native for a longer time, ~/.boot/cache/tmp
fills up, quickly reaching 10G. I'm guessing there's a tmp-dir
that is not being cleaned up properly.
As far as I can see there's only a development task at the moment which always tries to get the app over websockets. Would be great to have a task which prepares the app for App Store release. Might have some config/tooling laying around for this.
Currently SimpleExampleApp uses the cljs
task with the :main
option. This results in the error cljs: unknown option(s): :main
Instead, boot-cljs
should use a main.cljs.edn
with the relevant options
After adding source map support, there seems to be a noticeable delay after opening up Chrome. I suspect it is due to Chrome loading many sourcemaps. Try adding the cljs content to sourceContent property of sourcemap in cljs-rn-transformer/transform.
I just cloned the repo and followed the instructions to run the example app (ios), but the XCode project fails with error:
cp: /Users/aiba/boot-react-native/example/app/dist/main.jsbundle: No such file or directory
I eventually realized that running boot dist
solves this, but this was unclear from the instructions because I was only interested in a running in dev mode.
It looks like the line of AppDelegate.m that loads the bundle is commented out anyway:
// jsCodeLocation = [[NSBundle mainBundle] URLForResource:@"main" withExtension:@"jsbundle"];
So, would it make sense to modify add-bundle.sh to not copy the bundle if it doesn't exist? For example:
if [ -f "$bundle" ]; then
cp "$bundle" "$dest"
fi
Happy to submit a PR if this seems sensible.
Hi!
When I run npm install
in examples/app
I get the following error:
Mac
node v5.7.0
npm v3.7.5
npm WARN prefer global [email protected] should be installed with -g
> [email protected] install /Users/MYUSER/www/projects/boot-react-native/example/app/node_modules/fsevents
> node-pre-gyp install --fallback-to-build
[fsevents] Success: "/Users/MYUSER/www/projects/boot-react-native/example/app/node_modules/fsevents/lib/binding/Release/node-v47-darwin-x64/fse.node" is installed via remote
> [email protected] install /Users/MYUSER/www/projects/boot-react-native/example/app/node_modules/bufferutil
> node-gyp rebuild
CXX(target) Release/obj.target/bufferutil/src/bufferutil.o
SOLINK_MODULE(target) Release/bufferutil.node
ld: library not found for -lgcc_s.10.5
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make: *** [Release/bufferutil.node] Error 1
gyp ERR! build error
gyp ERR! stack Error: `make` failed with exit code: 2
gyp ERR! stack at ChildProcess.onExit (/Users/MYUSER/.node/lib/node_modules/npm/node_modules/node-gyp/lib/build.js:276:23)
gyp ERR! stack at emitTwo (events.js:100:13)
gyp ERR! stack at ChildProcess.emit (events.js:185:7)
gyp ERR! stack at Process.ChildProcess._handle.onexit (internal/child_process.js:200:12)
gyp ERR! System Darwin 15.3.0
gyp ERR! command "/usr/local/Cellar/node/5.7.0/bin/node" "/Users/MYUSER/.node/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "rebuild"
gyp ERR! cwd /Users/MYUSER/www/projects/boot-react-native/example/app/node_modules/bufferutil
gyp ERR! node -v v5.7.0
gyp ERR! node-gyp -v v3.3.0
gyp ERR! not ok
npm WARN install:[email protected] [email protected] install: `node-gyp rebuild`
npm WARN install:[email protected] Exit status 1
> [email protected] install /Users/MYUSER/www/projects/boot-react-native/example/app/node_modules/utf-8-validate
> node-gyp rebuild
CXX(target) Release/obj.target/validation/src/validation.o
SOLINK_MODULE(target) Release/validation.node
ld: library not found for -lgcc_s.10.5
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make: *** [Release/validation.node] Error 1
gyp ERR! build error
gyp ERR! stack Error: `make` failed with exit code: 2
gyp ERR! stack at ChildProcess.onExit (/Users/MYUSER/.node/lib/node_modules/npm/node_modules/node-gyp/lib/build.js:276:23)
gyp ERR! stack at emitTwo (events.js:100:13)
gyp ERR! stack at ChildProcess.emit (events.js:185:7)
gyp ERR! stack at Process.ChildProcess._handle.onexit (internal/child_process.js:200:12)
gyp ERR! System Darwin 15.3.0
gyp ERR! command "/usr/local/Cellar/node/5.7.0/bin/node" "/Users/MYUSER/.node/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "rebuild"
gyp ERR! cwd /Users/MYUSER/www/projects/boot-react-native/example/app/node_modules/utf-8-validate
gyp ERR! node -v v5.7.0
gyp ERR! node-gyp -v v3.3.0
gyp ERR! not ok
npm WARN install:[email protected] [email protected] install: `node-gyp rebuild`
npm WARN install:[email protected] Exit status 1
> [email protected] postinstall /Users/MYUSER/www/projects/boot-react-native/example/app/node_modules/spawn-sync
> node postinstall
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.