如何在Nativescript Webpack的应用程序目录中包含xml文件

时间:2019-01-16 16:36:33

标签: webpack nativescript

在我的应用程序中,我有两个用于两种类型用户的主屏幕和一个登录页面。当用户打开应用程序时,我检查用户的类型是什么,并根据用户类型打开特定的app-root.xml文件。

app.js

let currentLogin = appSettings.getString("login", "nothing");
if (currentLogin === 'customer') {
    application.run({ moduleName: "app-root-home" });
}
else if (currentLogin === 'shop') {
    application.run({ moduleName: "app-root-shop" });
}
else {
    application.run({ moduleName: "app-root" });
}

我的app目录中有三个不同的XML文件(app-rootapp-root-homeapp-root-shop)。他们每个人都有用不同布局包裹的不同框架。

当我在没有Webpack的情况下执行时,一切正常,但是当我从同伴中启用Webpack时,如果执行了以下语句application.run({ moduleName: "app-root-home" });,则会收到错误消息:TypeError: Cannot read property '_domid' of undefined

我试图反编译应用程序并查看bundle.js文件,但发现webpack既没有添加app-root-home.xml也没有添加app-root-shop.xml。只有app-root.xml在这里。

我正在使用nativescript同伴,并且正在云上构建我的项目;我输入的命令行不多,云为我做到了。

我的nativescript-dev-webpack开发人员版本为0.19.0

我正在JS进行开发。

我试图在github上找到类似我的类似问题的解决方案,并能够在xml目录中包含app文件,并且所有解决方案都在bundle-config.js中进行了修改我在我的项目中没有的。

webpack的新版本中,bundle-config.js文件在app目录中不再存在,而是存在于相同的插件文件夹中。 Reference

我的webpack.config.js目录中只有app,所以我需要知道是否可以在JS中将xml文件添加到其中,但是我找不到解决方法。 / p>

如何将最新版本的webpack插件的xml目录中的所有app文件包括到我的应用程序中,并在同伴上运行。

2 个答案:

答案 0 :(得分:2)

您可以创建两个新页面(app-root-home.xmlapp-root-shop.xml,而不是创建单独的app-root-homeapp-root-shop文件。对于每个页面,nativescript都会创建*-page.js*-view-model.js*-page.xml文件,并且在发布版本时webpack不会删除这些文件。

在创建两个新页面之后,可以包括*-page.xml文件而不是app-root-homeapp-root-shop xml文件。

答案 1 :(得分:1)

通过将其他app-root文件放在其名称的新文件夹中,我能够暂时解决问题,如下树所示:

  app
    |-- app-root.xml
    |-- app-root-home
    |   |-- app-root-home-page.js        //empty JS file
    |   |-- app-root-home-view-model.js  //empty JS file
    |   `-- app-root-home-page.xml
    `-- app-root-shop
        |-- app-root-shop-page.js        //empty JS file
        |-- app-root-shop-view-model.js  //empty JS file
        `-- app-root-shop-page.xml

并在我的app.js文件中:

let currentLogin = appSettings.getString("login", "nothing");
if (currentLogin === 'customer') {
    application.run({ moduleName: "app-root-home/app-root-home-page" });
}
else if (currentLogin === 'shop') {
    application.run({ moduleName: "app-root-shop/app-root-shop-page" });
}
else {
    application.run({ moduleName: "app-root" });
}

这不是我的问题的答案;这只是一个快速修复。