2 votes

Comment inclure des fichiers xml dans le répertoire de l'application en Nativescript webpack

Dans mon application, j'ai deux écrans principaux pour deux types d'utilisateurs et une page de connexion. Lorsqu'un utilisateur ouvre l'application, je vérifie quel est son type d'utilisateur et, en fonction de celui-ci, j'ouvre un écran spécifique. app-root.xml fichier.

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" });
}

J'ai trois fichiers XML différents dans mon app répertoire ( app-root , app-root-home & app-root-shop ). Chacun d'eux a un cadre différent enveloppé dans des dispositions différentes.

Lorsque j'exécute sans Webpack tout fonctionne bien, mais lorsque j'active Webpack à partir de sidekick, si l'instruction suivante est exécutée application.run({ moduleName: "app-root-home" }); Je reçois une erreur : TypeError: Cannot read property '_domid' of undefined .

J'ai essayé de décompiler l'application et j'ai vu la bundle.js et j'ai constaté que webpack n'a pas ajouté app-root-home.xml ni app-root-shop.xml . Seulement app-root.xml était là.

J'utilise nativescript sidekick et je construis mon projet sur le cloud ; je ne tape pas beaucoup de lignes de commande, le cloud le fait pour moi.

Mon nativescript-dev-webpack La version de développement est 0.19.0 .

Je développe en JS .

J'ai essayé de trouver une solution sur github pour des problèmes similaires au mien, et pour être capable d'inclure xml dans le app et toutes les solutions incluaient des modifications dans le répertoire bundle-config.js que je n'ai pas dans mon projet.

Il semble que dans les nouvelles versions de webpack le site bundle-config.js n'existe plus dans le répertoire app mais il existe dans les mêmes dossiers de plugins. Référence

Je n'ai que webpack.config.js dans mon app J'ai donc besoin de savoir si je peux y ajouter les fichiers xml en JS, mais je n'ai pas trouvé de moyen de le faire.

Comment puis-je inclure tous les xml fichiers dans app répertoire dans la dernière version du plugin webpack à mon application et exécuter sur sidekick.

2voto

mahmoud310 Points 95

Au lieu de créer un fichier séparé app-root-home.xml & app-root-shop.xml vous pouvez créer deux nouvelles pages( app-root-home & app-root-shop ). Pour chaque page, nativescript va créer *-page.js , *-view-model.js & *-page.xml et webpack ne supprimera pas ces fichiers lorsque vous publierez une version.

Après avoir créé les deux nouvelles pages, vous pouvez inclure les éléments suivants *-page.xml au lieu des fichiers app-root-home & app-root-shop fichiers xml.

1voto

Yazan W Yusuf Points 1038

J'ai pu résoudre mon problème temporairement en mettant l'autre app-root dans de nouveaux dossiers de leurs noms comme le montre l'arbre ci-dessous :

  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

et dans mon app.js fichier :

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" });
}

Ce n'est pas la réponse à ma question ; c'est juste une solution rapide.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X