在我的应用程序中,我有两个用于两种类型用户的主屏幕和一个登录页面。当用户打开应用程序时,我检查用户的类型是什么,并根据用户类型打开特定的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-root
,app-root-home
和app-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
文件包括到我的应用程序中,并在同伴上运行。
答案 0 :(得分:2)
您可以创建两个新页面(app-root-home.xml
和app-root-shop.xml
,而不是创建单独的app-root-home
和app-root-shop
文件。对于每个页面,nativescript都会创建*-page.js
,*-view-model.js
和*-page.xml
文件,并且在发布版本时webpack不会删除这些文件。
在创建两个新页面之后,可以包括*-page.xml
文件而不是app-root-home
和app-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" });
}
这不是我的问题的答案;这只是一个快速修复。