Skip to content
This repository was archived by the owner on Aug 7, 2021. It is now read-only.
This repository was archived by the owner on Aug 7, 2021. It is now read-only.

App crashes when using builder within custom component after bundle-build with webpack #867

Closed
@felixkrautschuk

Description

@felixkrautschuk

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)

Metadata

Metadata

Assignees

Labels

docsmigration-to-bundleThe issue is describing a breaking change in the Bundle workflow compared to the Legacy one.

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions