Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings
This repository was archived by the owner on Aug 7, 2021. It is now read-only.

feat: add initial HMR support for plain JS/TS apps #645

Merged
sis0k0 merged 10 commits into master from sis0k0/hot-update
Sep 10, 2018
Merged

Conversation

Copy link
Contributor

@sis0k0 sis0k0 commented Sep 7, 2018

No description provided.

shiv19, NathanWalker, and bradmartin reacted with thumbs up emoji shiv19, NathanWalker, and bradmartin reacted with hooray emoji shiv19, NathanWalker, and bradmartin reacted with heart emoji
@sis0k0 sis0k0 merged commit 0069177 into master Sep 10, 2018
Copy link
Member

shiv19 commented Sep 10, 2018
edited
Loading

@sis0k0 Hey I just tried HMR with {N} + JS.
Works totally fine with the first page. But when I try to navigate to a second page, the
app crashes with this =>

System.err: Calling js method onClick failed
System.err:
System.err: TypeError: Cannot read property 'onNavigatingTo' of undefined
System.err: File: "file:///data/data/org.nativescript.hmrDemo/files/app/vendor.js, line: 20010, column: 36
System.err:
System.err: StackTrace:
System.err: Frame: function:'push.../node_modules/tns-core-modules/ui/frame/frame-common.js.FrameBase._onNavigatingTo', file:'file:///data/data/org.nativescript.hmrDemo/files/app/vendor.js', line: 20010, column: 37
System.err: Frame: function:'push.../node_modules/tns-core-modules/ui/frame/frame-common.js.FrameBase.performNavigation', file:'file:///data/data/org.nativescript.hmrDemo/files/app/vendor.js', line: 19982, column: 14
System.err: Frame: function:'push.../node_modules/tns-core-modules/ui/frame/frame-common.js.FrameBase._processNextNavigationEntry', file:'file:///data/data/org.nativescript.hmrDemo/files/app/vendor.js', line: 19975, column: 22
System.err: Frame: function:'push.../node_modules/tns-core-modules/ui/frame/frame.js.Frame._processNextNavigationEntry', file:'file:///data/data/org.nativescript.hmrDemo/files/app/vendor.js', line: 20419, column: 58
System.err: Frame: function:'push.../node_modules/tns-core-modules/ui/frame/frame-common.js.FrameBase.navigate', file:'file:///data/data/org.nativescript.hmrDemo/files/app/vendor.js', line: 19879, column: 14
System.err: Frame: function:'viewModel.onTap', file:'file:///data/data/org.nativescript.hmrDemo/files/app/bundle.js', line: 1058, column: 25
System.err: Frame: function:'push.../node_modules/tns-core-modules/data/observable/observable.js.Observable.notify', file:'file:///data/data/org.nativescript.hmrDemo/files/app/vendor.js', line: 3485, column: 32
System.err: Frame: function:'push.../node_modules/tns-core-modules/data/observable/observable.js.Observable._emit', file:'file:///data/data/org.nativescript.hmrDemo/files/app/vendor.js', line: 3505, column: 18
System.err: Frame: function:'ClickListenerImpl.onClick', file:'file:///data/data/org.nativescript.hmrDemo/files/app/vendor.js', line: 13224, column: 23
System.err:
System.err: at com.tns.Runtime.callJSMethodNative(Native Method)
System.err: at com.tns.Runtime.dispatchCallJSMethodNative(Runtime.java:1116)
System.err: at com.tns.Runtime.callJSMethodImpl(Runtime.java:996)
System.err: at com.tns.Runtime.callJSMethod(Runtime.java:983)
System.err: at com.tns.Runtime.callJSMethod(Runtime.java:967)
System.err: at com.tns.Runtime.callJSMethod(Runtime.java:959)
System.err: at com.tns.gen.java.lang.Object_vendor_13217_32_ClickListenerImpl.onClick(Object_vendor_13217_32_ClickListenerImpl.java:17)
System.err: at android.view.View.performClick(View.java:6205)
System.err: at android.widget.TextView.performClick(TextView.java:11103)
System.err: at android.view.View$PerformClick.run(View.java:23653)
System.err: at android.os.Handler.handleCallback(Handler.java:751)
System.err: at android.os.Handler.dispatchMessage(Handler.java:95)
System.err: at android.os.Looper.loop(Looper.java:154)
System.err: at android.app.ActivityThread.main(ActivityThread.java:6682)
System.err: at java.lang.reflect.Method.invoke(Native Method)
System.err: at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1520)
System.err: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1410)

Copy link
Member

shiv19 commented Sep 10, 2018

Archive.zip
Here is the project

Copy link

File change detected. Starting incremental webpack compilation...
Hash: 729d53ea7a6be0c9c297
Version: webpack 4.6.0
Time: 523ms
Built at: 09/10/2018 6:01:25 PM
 Asset Size Chunks Chunk Names
 bundle.js 39 KiB bundle [emitted] bundle
bundle.f5f9e0f902bb105191cb.hot-update.js 995 bytes bundle [emitted] bundle
 f5f9e0f902bb105191cb.hot-update.json 48 bytes [emitted]
 + 1 hidden asset
[./ sync ^\.\/app\.(css|scss|less|sass)$] . sync nonrecursive ^\.\/app\.(css|scss|less|sass)$ 174 bytes {bundle} [built]
[./ sync recursive (root|page)\.(xml|css|js|ts|scss)$] . sync (root|page)\.(xml|css|js|ts|scss)$ 218 bytes {bundle} [built]
[./main-view-model.js] 769 bytes {bundle} [built]
 + 162 hidden modules
Webpack compilation complete. Watching for file changes.
Webpack build done!
Executing before-shouldPrepare hook from /Users/bradmartin/test-js/hooks/before-shouldPrepare/nativescript-dev-webpack.js
Preparing project...
Executing before-prepareJSApp hook from /Users/bradmartin/test-js/hooks/before-prepareJSApp/nativescript-dev-webpack.js
Project successfully prepared (Android)
Executing after-prepare hook from /Users/bradmartin/test-js/hooks/after-prepare/nativescript-dev-webpack.js
Successfully transferred bundle.js.
Successfully transferred bundle.f5f9e0f902bb105191cb.hot-update.js.
Successfully transferred f5f9e0f902bb105191cb.hot-update.json.
JS: LiveSyncing...
JS: Checking for updates to the bundle.
JS: Hashes don't match. Ignoring second update...
JS: The following modules were updated:
JS: ↻ ./main-view-model.js
JS: ↻ ./main-page.js
Refreshing application...
Successfully synced application org.nativescript.testjs on device emulator-5554.
09-10 18:01:27.446 4034 4034 E AndroidRuntime: 	at com.tns.Runtime.callJSMethodNative(Native Method)
09-10 18:01:27.446 4034 4034 E AndroidRuntime: 	at com.tns.Runtime.dispatchCallJSMethodNative(Runtime.java:1116)
09-10 18:01:27.446 4034 4034 E AndroidRuntime: 	at com.tns.Runtime.callJSMethodImpl(Runtime.java:996)
09-10 18:01:27.446 4034 4034 E AndroidRuntime: 	at com.tns.Runtime.callJSMethod(Runtime.java:983)
09-10 18:01:27.446 4034 4034 E AndroidRuntime: 	at com.tns.Runtime.callJSMethod(Runtime.java:967)
09-10 18:01:27.446 4034 4034 E AndroidRuntime: 	at com.tns.Runtime.callJSMethod(Runtime.java:959)
System.err: com.tns.NativeScriptException:
System.err: Calling js method onClick failed
System.err:
System.err: TypeError: Cannot read property 'onNavigatingTo' of undefined
System.err: File: "file:///data/data/org.nativescript.testjs/files/app/vendor.js, line: 20084, column: 36
System.err:
System.err: StackTrace:
System.err: 	Frame: function:'push.../node_modules/tns-core-modules/ui/frame/frame-common.js.FrameBase._onNavigatingTo', file:'file:///data/data/org.nativescript.testjs/files/app/vendor.js', line: 20084, column: 37
System.err: 	Frame: function:'push.../node_modules/tns-core-modules/ui/frame/frame-common.js.FrameBase.performNavigation', file:'file:///data/data/org.nativescript.testjs/files/app/vendor.js', line: 20056, column: 14
System.err: 	Frame: function:'push.../node_modules/tns-core-modules/ui/frame/frame-common.js.FrameBase._processNextNavigationEntry', file:'file:///data/data/org.nativescript.testjs/files/app/vendor.js', line: 20049, column: 22
System.err: 	Frame: function:'push.../node_modules/tns-core-modules/ui/frame/frame.js.Frame._processNextNavigationEntry', file:'file:///data/data/org.nativescript.testjs/files/app/vendor.js', line: 20496, column: 58
System.err: 	Frame: function:'push.../node_modules/tns-core-modules/ui/frame/frame-common.js.FrameBase.navigate', file:'file:///data/data/org.nativescript.testjs/files/app/vendor.js', line: 19953, column: 14
System.err: 	Frame: function:'viewModel.onTap', file:'file:///data/data/org.nativescript.testjs/files/app/bundle.f5f9e0f902bb105191cb.hot-update.js', line: 23, column: 19
System.err: 	Frame: function:'push.../node_modules/tns-core-modules/data/observable/observable.js.Observable.notify', file:'file:///data/data/org.nativescript.testjs/files/app/vendor.js', line: 3485, column: 32
System.err: 	Frame: function:'push.../node_modules/tns-core-modules/data/observable/observable.js.Observable._emit', file:'file:///data/data/org.nativescript.testjs/files/app/vendor.js', line: 3505, column: 18
System.err: 	Frame: function:'ClickListenerImpl.onClick', file:'file:///data/data/org.nativescript.testjs/files/app/vendor.js', line: 13223, column: 23
System.err:
System.err: 	at com.tns.Runtime.callJSMethodNative(Native Method)
System.err: 	at com.tns.Runtime.dispatchCallJSMethodNative(Runtime.java:1116)
System.err: 	at com.tns.Runtime.callJSMethodImpl(Runtime.java:996)
System.err: 	at com.tns.Runtime.callJSMethod(Runtime.java:983)
System.err: 	at com.tns.Runtime.callJSMethod(Runtime.java:967)
System.err: 	at com.tns.Runtime.callJSMethod(Runtime.java:959)
System.err: 	at com.tns.gen.java.lang.Object_vendor_13216_32_ClickListenerImpl.onClick(Object_vendor_13216_32_ClickListenerImpl.java:17)
System.err: 	at android.view.View.performClick(View.java:6294)
System.err: 	at android.view.View$PerformClick.run(View.java:24770)
System.err: 	at android.os.Handler.handleCallback(Handler.java:790)
System.err: 	at android.os.Handler.dispatchMessage(Handler.java:99)
System.err: 	at android.os.Looper.loop(Looper.java:164)
System.err: 	at android.app.ActivityThread.main(ActivityThread.java:6494)
System.err: 	at java.lang.reflect.Method.invoke(Native Method)
System.err: 	at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438)
System.err: 	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807)

same to just confirm, adding a second 'page' (module) called navigate to it and crashed ^^^.

Awesome stuff BTW everyone at NS ❤️ can't describe how happy I am to see this moving.

shiv19 reacted with heart emoji

Copy link
Contributor

@shiv19 and @bradmartin the attached project won't work with tns run android/ios --bundle as well. The problem is that you need to name the page to end with root or page as stated in the following post Upgrading to NativeScript Webpack 0.12.0. Naming the page second-page.xml should work.

bradmartin reacted with thumbs up emoji

Copy link
Member

shiv19 commented Sep 11, 2018
edited
Loading

@vtrifonov please check the Archive I sent, I have tried to navigate to (削除) second-page.xml (削除ここまで).
Also the command used was tns run android --hmr using next version of nativescript and tns-core-modules.

Copy link
Contributor Author

sis0k0 commented Sep 11, 2018

Hey @shiv19, we've used the app that you sent and changing the name of page-2.xml to second-page.xml resolves the issue.

bradmartin and shiv19 reacted with thumbs up emoji

Copy link
Member

shiv19 commented Sep 11, 2018
edited
Loading

Oops, sorry about that!

Edit: Yes indeed! changing it to second-page.xml resolved the issue

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Reviewers

@vakrilov vakrilov Awaiting requested review from vakrilov

1 more reviewer

@vtrifonov vtrifonov vtrifonov approved these changes

Reviewers whose approvals may not affect merge requirements
Assignees
No one assigned
Labels
None yet
Projects
None yet
Milestone
No milestone
Development

Successfully merging this pull request may close these issues.

AltStyle によって変換されたページ (->オリジナル) /