Selon le conseiller du support technique de Kentico, afin d'obtenir mon application create-react-app rendue sur IE11, j'ai dû changer la ligne de code suivante dans le node_modules -> kentico-cloud-delivery -> package.json file:
"main": "./_bundles/kentico-cloud-delivery-sdk.browser.umd.min.js"
Après cette modification, mon application react est rendue sur mon IE local, mais le problème est que comment puis-je pousser cette modification dans le bitbucket afin que l'application react puisse être rendue sur IE11 sur un serveur également.
En règle générale, nous ne poussons jamais les node_modules dans bitbucket et les mettons dans un fichier .gitignore, veuillez me faire savoir comment puis-je résoudre ce problème. Remarque: mon projet est une application create-react-app.
3 Réponses :
En ne poussant pas vos modules npm sur un serveur bitbucket, cela signifie que l'application qui y est exécutée récupérera les packages d'une liste dans un fichier généralement appelé package.json. Donc, vous poussez probablement un fichier .json vers un bitbucket qui contient toutes les informations de dépendance et que vous pouvez modifier pour rendre votre application dans IE11.
Bravo!
Ce n'est PAS le package général.json qui est généralement situé à la racine d'un projet, c'est le package kentico-cloud-delivery.json à l'intérieur des node_modules, donc je pense que je dois le pousser dans Bitbucket, mais je ne le fais pas savoir-faire?
Dans ce cas, contactez vos aînés et parlez-leur de votre problème spécifique. La façon dont je vois les choses est que vous pouvez soit pousser votre version de kentico-cloud-delivery ou faire un PR s'il est open source.
Je voudrais lier le problème où la solution de contournement conseillée consiste à définir react-scripts charger le package approprié et le problème lié pour tout le contexte.
Le problème lui-même est causé par parse5 La bibliothèque ne publie pas de code ES5 sur npm et par conséquent, la compilation échoue.
1) La recommandation générale de create-react-app Je s pour passer à la version 2 + et ceci est également cité sur la FAQ section du SDK javascript Kentico Cloud.
2) Si vous souhaitez placer la solution de contournement malgré toutes les recommandations car il s'agit d'une modification manuelle du code node_modules > vous devez vous assurer que la modification du package est préservée sur le serveur avant la construction. Donc, après
npm install
/ yarn
, vous éditerez le fichier package.json dans node_modules
.
Le script (nommé ie workaround.js
écrit dans node) ressemblerait à:
{ ... "scripts": { "workaround": "node workaround.js" } ... }
et définirait un script dans package.json
dans votre application de
const fs = require('fs'); const KCPackagePath = 'node_modules/kentico-cloud-delivery/package.json'; const package = require(KCPackagePath); package.main = "./_bundles/kentico-cloud-delivery-sdk.browser.umd.min.js" fs.writeFile(configPath, JSON.stringify(package, undefined, 2), function (err) { if (err) { console.error('Error while writing to file: ' + KCPackagePath); throw err;; } console.info('Package was successfully updated.') });
La réponse exacte à la question de savoir comment ignorer un fichier dans le référentiel et ignorer le reste du dossier utilise !
format de modèle :
node_modules !node_modules/kentico-delivery-sdk/package.json
! MAIS! npm install
/ La commande yarn
remplacerait toujours le package.json
content
Pourriez-vous décrire plus en détail les fichiers que vous transférez vers le bitbucket? Et comment faire un déploiement du bitbucket à l'hébergement?
Vous ne devez pas modifier le package.json de votre dépendance. Puisque 'kentico-cloud-delivery-sdk.browser.umd.min.js' est un javascript umd assez standard, vous pouvez l'importer directement dans react - au lieu d'utiliser 'import from' kentico-cloud-delivery ', vous pouvez importer directement à partir de 'kentico-cloud-delivery / _bundles / _bundles / kentico-cloud-deli very-sdk.browser.umd .min'