App crashes when using builder within custom component after bundle-build with webpack #867
Description
Environment
Provide version numbers for the following components (information can be retrieved by running tns info
in your project folder or by inspecting the package.json
of the project):
- CLI: 5.3.2
- Cross-platform modules: 5.3.1
- Android Runtime: 5.3.1
- iOS Runtime: -
- Plugin(s): nativescript-ui-listview
- Node.js: -
Just the config files package.json, webpack.config.js, bundle-config.js:
config_file.zip
Describe the bug
I have two custom components (code-only) in my app: DropdownList.js and Pagination.js.
In the Pagination.js component, I try to add the DropdownList component within the Pagination component like this:
//app/shared/pagination/Pagination.js
var Pagination = (function (_super) {
global.__extends(Pagination, _super);
function Pagination() {
var _this = _super.call(this);
var dropdown = builder.load({
path: 'shared/dropdown/DropdownList',
name: 'DropdownList'
});
_this.addChild(dropdown);
...
}
...
})(gridLayoutModule.GridLayout);
<!-- main-page.xml -->
<Page xmlns:pagination="shared/pagination/Pagination">
...
<StackLayout class="p-20">
<pagination:Pagination countPages="{{ countPages }}" page="{{ page }}" selectedPageChanged="onSelectedPageChanged"/>
</StackLayout>
</Page>
But when navigating to page that uses the pagination component, the app crashes.
Please note that everything works as expected when building the app without the --bundle flage.
I have no idea where to start searching the cause of this issue.
I tried to register the components in bundle-config.js
if (global.TNS_WEBPACK) {
// Register custom modules
global.registerModule("nativescript-ui-listview",
() => require("../node_modules/nativescript-ui-listview"));
global.registerModule("DropdownList",
() => require("./shared/dropdown/DropdownList"));
global.registerModule("Pagination",
() => require("./shared/pagination/Pagination"));
}
I also added the shared folder here within webpack.config.js:
new CopyWebpackPlugin([
{ from: { glob: "fonts/**" } },
{ from: { glob: "shared/**" } },
{ from: { glob: "**/*.jpg" } },
{ from: { glob: "**/*.png" } },
]
The crashlog can be found here:
System.err: java.lang.RuntimeException: Unable to start activity ComponentInfo{org.nativescript.NSWebPackCustomComponent/com.tns.NativeScriptActivity}: com.tns.NativeScriptException:
System.err: Calling js method onCreate failed
System.err:
System.err: Error: Parsing XML at 1:1
System.err: > Parsing XML at 28:9
System.err: > Module 'shared/pagination/Pagination' not found for element 'shared/pagination/Pagination:Pagination'.
System.err: > Module '/data/data/org.nativescript.NSWebPackCustomComponent/files/app/shared/dropdown/DropdownList' not found for element 'shared/dropdown/DropdownList:DropdownList'.
System.err: > com.tns.NativeScriptException: Failed to find module: "tns-core-modules/ui/layouts/grid-layout", relative to: app/tns_modules/
System.err: com.tns.Module.resolvePathHelper(Module.java:146)
System.err: com.tns.Module.resolvePath(Module.java:55)
System.err: com.tns.Runtime.callJSMethodNative(Native Method)
System.err: com.tns.Runtime.dispatchCallJSMethodNative(Runtime.java:1203)
System.err: com.tns.Runtime.callJSMethodImpl(Runtime.java:1083)
System.err: com.tns.Runtime.callJSMethod(Runtime.java:1070)
System.err: com.tns.Runtime.callJSMethod(Runtime.java:1050)
System.err: com.tns.Runtime.callJSMethod(Runtime.java:1042)
System.err: com.tns.NativeScriptActivity.onCreate(NativeScriptActivity.java:19)
System.err: android.app.Activity.performCreate(Activity.java:7136)
System.err: android.app.Activity.performCreate(Activity.java:7127)
System.err: android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1271)
System.err: android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2926)
System.err: android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3081)
System.err: android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78)
System.err: android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108)
System.err: android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68)
System.err: android.app.ActivityThread$H.handleMessage(ActivityThread.java:1838)
System.err: android.os.Handler.dispatchMessage(Handler.java:106)
System.err: android.os.Looper.loop(Looper.java:193)
System.err: android.app.ActivityThread.main(ActivityThread.java:6715)
System.err: java.lang.reflect.Method.invoke(Native Method)
System.err: com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
System.err: com.android.internal.os.ZygoteInit.main(ZygoteInit.java:911)
System.err: File: "file:///data/data/org.nativescript.NSWebPackCustomComponent/files/app/vendor.js, line: 15786, column: 20
System.err:
System.err: StackTrace:
System.err: Frame: function:'ScopeError', file:'file:///data/data/org.nativescript.NSWebPackCustomComponent/files/app/vendor.js', line: 36010, column: 24
System.err: Frame: function:'PositionErrorFormat', file:'file:///data/data/org.nativescript.NSWebPackCustomComponent/files/app/vendor.js', line: 15799, column: 16
System.err: Frame: function:'', file:'file:///data/data/org.nativescript.NSWebPackCustomComponent/files/app/vendor.js', line: 15786, column: 33
System.err: Frame: function:'', file:'file:///data/data/org.nativescript.NSWebPackCustomComponent/files/app/vendor.js', line: 37128, column: 13
System.err: Frame: function:'push.../node_modules/tns-core-modules/js-libs/easysax/easysax.js.EasySAXParser.parse', file:'file:///data/data/org.nativescript.NSWebPackCustomComponent/files/app/vendor.js', line: 10436, column: 23
System.err: Frame: function:'push.../node_modules/tns-core-modules/xml/xml.js.XmlParser.parse', file:'file:///data/data/org.nativescript.NSWebPackCustomComponent/files/app/vendor.js', line: 37175, column: 22
System.err: Frame: function:'push.../node_modules/tns-core-modules/ui/builder/builder.js.XmlStringParser.parse', file:'file:///data/data/org.nativescript.NSWebPackCustomComponent/files/app/vendor.js', line: 15792, column: 27
System.err: Frame: function:'parseInternal', file:'file:///data/data/org.nativescript.NSWebPackCustomComponent/files/app/vendor.js', line: 15754, column: 11
System.err: Frame: function:'loadInternal', file:'file:///data/data/org.nativescript.NSWebPackCustomComponent/files/app/vendor.js', line: 15654, column: 27
System.err: Frame: function:'loadPage', file:'file:///data/data/org.nativescript.NSWebPackCustomComponent/files/app/vendor.js', line: 15588, column: 27
System.err: Frame: function:'', file:'file:///data/data/org.nativescript.NSWebPackCustomComponent/files/app/vendor.js', line: 15609, column: 12
System.err: Frame: function:'', file:'file:///data/data/org.nativescript.NSWebPackCustomComponent/files/app/vendor.js', line: 15623, column: 20
System.err: Frame: function:'push.../node_modules/tns-core-modules/ui/frame/frame.js.ActivityCallbacksImplementation.setActivityContent', file:'file:///data/data/org.nativescript.NSWebPackCustomComponent/files/app/vendor.js', line: 24669, column: 42
System.err: Frame: function:'push.../node_modules/tns-core-modules/ui/frame/frame.js.ActivityCallbacksImplementation.onCreate', file:'file:///data/data/org.nativescript.NSWebPackCustomComponent/files/app/vendor.js', line: 24502, column: 14
System.err: Frame: function:'push.../node_modules/tns-core-modules/ui/frame/activity.js.NativeScriptActivity.onCreate', file:'file:///data/data/org.nativescript.NSWebPackCustomComponent/files/app/vendor.js', line: 22415, column: 25
System.err:
System.err: at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2946)
System.err: at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3081)
System.err: at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78)
System.err: at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108)
System.err: at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68)
System.err: at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1838)
System.err: at android.os.Handler.dispatchMessage(Handler.java:106)
System.err: at android.os.Looper.loop(Looper.java:193)
System.err: at android.app.ActivityThread.main(ActivityThread.java:6715)
System.err: at java.lang.reflect.Method.invoke(Native Method)
System.err: at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
System.err: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:911)
System.err: Caused by: com.tns.NativeScriptException:
System.err: Calling js method onCreate failed
System.err:
System.err: Error: Parsing XML at 1:1
System.err: > Parsing XML at 28:9
System.err: > Module 'shared/pagination/Pagination' not found for element 'shared/pagination/Pagination:Pagination'.
System.err: > Module '/data/data/org.nativescript.NSWebPackCustomComponent/files/app/shared/dropdown/DropdownList' not found for element 'shared/dropdown/DropdownList:DropdownList'.
System.err: > com.tns.NativeScriptException: Failed to find module: "tns-core-modules/ui/layouts/grid-layout", relative to: app/tns_modules/
System.err: com.tns.Module.resolvePathHelper(Module.java:146)
System.err: com.tns.Module.resolvePath(Module.java:55)
System.err: com.tns.Runtime.callJSMethodNative(Native Method)
System.err: com.tns.Runtime.dispatchCallJSMethodNative(Runtime.java:1203)
System.err: com.tns.Runtime.callJSMethodImpl(Runtime.java:1083)
System.err: com.tns.Runtime.callJSMethod(Runtime.java:1070)
System.err: com.tns.Runtime.callJSMethod(Runtime.java:1050)
System.err: com.tns.Runtime.callJSMethod(Runtime.java:1042)
System.err: com.tns.NativeScriptActivity.onCreate(NativeScriptActivity.java:19)
System.err: android.app.Activity.performCreate(Activity.java:7136)
System.err: android.app.Activity.performCreate(Activity.java:7127)
System.err: android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1271)
System.err: android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2926)
System.err: android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3081)
System.err: android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78)
System.err: android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108)
System.err: android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68)
System.err: android.app.ActivityThread$H.handleMessage(ActivityThread.java:1838)
System.err: android.os.Handler.dispatchMessage(Handler.java:106)
System.err: android.os.Looper.loop(Looper.java:193)
System.err: android.app.ActivityThread.main(ActivityThread.java:6715)
System.err: java.lang.reflect.Method.invoke(Native Method)
System.err: com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
System.err: com.android.internal.os.ZygoteInit.main(ZygoteInit.java:911)
System.err: File: "file:///data/data/org.nativescript.NSWebPackCustomComponent/files/app/vendor.js, line: 15786, column: 20
System.err:
System.err: StackTrace:
System.err: Frame: function:'ScopeError', file:'file:///data/data/org.nativescript.NSWebPackCustomComponent/files/app/vendor.js', line: 36010, column: 24
System.err: Frame: function:'PositionErrorFormat', file:'file:///data/data/org.nativescript.NSWebPackCustomComponent/files/app/vendor.js', line: 15799, column: 16
System.err: Frame: function:'', file:'file:///data/data/org.nativescript.NSWebPackCustomComponent/files/app/vendor.js', line: 15786, column: 33
System.err: Frame: function:'', file:'file:///data/data/org.nativescript.NSWebPackCustomComponent/files/app/vendor.js', line: 37128, column: 13
System.err: Frame: function:'push.../node_modules/tns-core-modules/js-libs/easysax/easysax.js.EasySAXParser.parse', file:'file:///data/data/org.nativescript.NSWebPackCustomComponent/files/app/vendor.js', line: 10436, column: 23
System.err: Frame: function:'push.../node_modules/tns-core-modules/xml/xml.js.XmlParser.parse', file:'file:///data/data/org.nativescript.NSWebPackCustomComponent/files/app/vendor.js', line: 37175, column: 22
System.err: Frame: function:'push.../node_modules/tns-core-modules/ui/builder/builder.js.XmlStringParser.parse', file:'file:///data/data/org.nativescript.NSWebPackCustomComponent/files/app/vendor.js', line: 15792, column: 27
System.err: Frame: function:'parseInternal', file:'file:///data/data/org.nativescript.NSWebPackCustomComponent/files/app/vendor.js', line: 15754, column: 11
System.err: Frame: function:'loadInternal', file:'file:///data/data/org.nativescript.NSWebPackCustomComponent/files/app/vendor.js', line: 15654, column: 27
System.err: Frame: function:'loadPage', file:'file:///data/data/org.nativescript.NSWebPackCustomComponent/files/app/vendor.js', line: 15588, column: 27
System.err: Frame: function:'', file:'file:///data/data/org.nativescript.NSWebPackCustomComponent/files/app/vendor.js', line: 15609, column: 12
System.err: Frame: function:'', file:'file:///data/data/org.nativescript.NSWebPackCustomComponent/files/app/vendor.js', line: 15623, column: 20
System.err: Frame: function:'push.../node_modules/tns-core-modules/ui/frame/frame.js.ActivityCallbacksImplementation.setActivityContent', file:'file:///data/data/org.nativescript.NSWebPackCustomComponent/files/app/vendor.js', line: 24669, column: 42
System.err: Frame: function:'push.../node_modules/tns-core-modules/ui/frame/frame.js.ActivityCallbacksImplementation.onCreate', file:'file:///data/data/org.nativescript.NSWebPackCustomComponent/files/app/vendor.js', line: 24502, column: 14
System.err: Frame: function:'push.../node_modules/tns-core-modules/ui/frame/activity.js.NativeScriptActivity.onCreate', file:'file:///data/data/org.nativescript.NSWebPackCustomComponent/files/app/vendor.js', line: 22415, column: 25
System.err:
System.err: at com.tns.Runtime.callJSMethodNative(Native Method)
System.err: at com.tns.Runtime.dispatchCallJSMethodNative(Runtime.java:1203)
System.err: at com.tns.Runtime.callJSMethodImpl(Runtime.java:1083)
System.err: at com.tns.Runtime.callJSMethod(Runtime.java:1070)
System.err: at com.tns.Runtime.callJSMethod(Runtime.java:1050)
System.err: at com.tns.Runtime.callJSMethod(Runtime.java:1042)
System.err: at com.tns.NativeScriptActivity.onCreate(NativeScriptActivity.java:19)
System.err: at android.app.Activity.performCreate(Activity.java:7136)
System.err: at android.app.Activity.performCreate(Activity.java:7127)
System.err: at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1271)
System.err: at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2926)
System.err: ... 11 more
The strange thing is this part of the crashlog:
Failed to find module: "tns-core-modules/ui/layouts/grid-layout", relative to: app/tns_modules/
To Reproduce
Just start the sample project, it will crash immediately, as I try to include the Pagination component in the main-page.xml.
Expected behavior
Sample project
Full sample project:
NSWebPackCustomComponent.zip
I appreciate any hint to figure out what causes this issue.
Again I want to mention one more time, that everything works when not using webpack (tns run android)