2
votes

NPM installe une version différente de package.json

Pour notre application Electron, nous avons besoin d'une version spécifique de pixi.js (5.0.0-rc.3). Dans notre package.json nous avons donc spécifié "pixi.js": "^ 5.0.0-rc.3", .

Lorsque nous exécutons npm install maintenant et ouvrons notre application, le message de bienvenue de pixi et l'état package-lock.json version 5.0.4. Nous avons essayé de supprimer le dossier node_modules et de réinstaller tous les modules, mais il a toujours la mauvaise version.

Notre déclaration d'importation dans le fichier html est const PIXI = require ('pixi.js'); et cela devrait obtenir la version installée localement de pixi si je ne me trompe pas.

Est-ce un bug? Ou est-ce exprès (si oui, dans quel but)?

<❯Mise à jour

Comme il y a maintenant des réponses et des commentaires, voici ce que nous avons essayé jusqu'à présent:

  • Supprimez package-lock.json , le dossier node_modules (localement et globalement) et exécutez à nouveau npm i
  • Réinstaller NodeJS (LTS)
  • Tout testé avec la version actuelle de NodeJS
  • Suppression du '^' du package.json car il est compatible avec n'importe quelle version de la plage d'installation
  • Je l'ai testé sur une autre machine Windows 10 et sur macOS

Mise à jour 2

Il y a trois réponses maintenant et aucune n'a pu résoudre le problème jusqu'à présent, je commence à croire que ce n'est pas ma faute, mais peut-être un bug avec Pixi JS. J'ai ouvert un problème sur leur page GitHub , peut-être qu'ils peuvent vous aider.


8 commentaires

pouvez-vous réessayer de supprimer package-lock.json et / ou npm-shrinkwrap ?


A fait les deux, installe toujours 5.0.4. @AritraChakraborty


Si vous avez un package-lock.json, exécuter npm ci au lieu de npm install ne fera jamais muter le package.json / package-lock.json et devrait garantir les mêmes versions.


Vous avez en fait spécifié que vous vouliez la version 5.anything .. . Si vous voulez UNIQUEMENT 5.0.0-rc.3 spécifier "pixi.js": "5.0.0-rc.3" - supprimez le ^ < / code> signe


@slebetman Merci pour le tuyau! Malheureusement, cela n'a pas corrigé l'erreur.


Je l'ai testé sur ma machine et je peux garantir à 100% que l'installation de pixi.js 5.0.0-rc.3 n'installe pas la version 5.0.4. Êtes-vous sûr d'avoir supprimé l'ancienne version 5.0.4 de votre disque? Npm ne supprimera pas les fichiers de votre disque. L'exécution de npm install ne rétrogradera pas pixi.js. Vous devez tout supprimer (normalement le répertoire node_modules mais je ne connais pas votre pipeline de build Electron) et exécuter à nouveau npm install


J'ai réinstallé le nœud JS 10.16. sur ma machine, supprimé le dossier local et global node_modules, changé l'entrée en "pixi.js": "5.0.0-rc.3", , supprimé le fichier package-lock et exécuté NPM installez à nouveau et il affiche toujours 5.0.4 dans la console et le fichier de verrouillage du package. J'utilise la dernière version de Windows 10.


J'ai essayé cela avec la dernière version du nœud JS maintenant, cela ne fonctionne toujours pas.


3 Réponses :


1
votes

Si vous souhaitez installer une version spécifique, n'utilisez pas ~ ou ^ dans package.json , utilisez exactement la version

Le tilde ~ correspond à la version de patch la plus récente (le troisième numéro) pour la version mineure spécifiée (le deuxième nombre).
~ 1.2.3 correspondra à toutes les versions 1.2.x mais restera à 1.3.0.

Le signe curseur ^ est plus détendu. Il correspond à la version mineure la plus récente (le deuxième nombre) pour la version majeure spécifiée (le premier numéro).
^ 1.2.3 correspondra à n'importe quelle version 1.x.x , y compris la version 1.3.0, mais attendez 2.0.0.

Dans votre cas: "pixi.js": "5.0.0-rc.3"

De: Quelle est la différence entre tilde (~ ) et caret (^) dans package.json?


8 commentaires

Merci beaucoup! Malheureusement, j'ai fait toutes les étapes et il installe toujours le 5.0.4. Je suis vraiment déçu car je pensais que c'était le problème ...: |


J'ai essayé d'installer manuellement, il a installé. Alors, peut-être que vous pouvez l'installer manuellement.


J'ai essayé cela aussi, après l'avoir supprimé du package.json mais dans l'application, il affiche toujours 5.0.4. Qu'est-ce que votre package-lock.json état après avoir exécuté ceci?


En supprimant ce bit, dans mon verrou de paquet, il est affiché 5.0.4 et non 5.0.0. Vous devez peut-être diriger l'installation de npm à partir de github. Je vais vérifier et poster ici. C'est peut-être le problème de pixi.js, pas le vôtre.


Ouais, la même chose se passe sur mon PC. Peut-être qu'ils ont redirigé tout le monde de 5.0.0-rc-3 vers 5.0.4 à cause d'un bogue ou quelque chose de similaire.


@creyD Cela semble très improbable. Êtes-vous sûr d'avoir supprimé le répertoire node_modules et exécuté à nouveau npm-install?


@slebetman ouais je l'ai fait. J'ai supprimé les node_modules locaux et globaux, réinstallé nodeJS (donc npm), supprimé package-lock et reran npm install et la console indique toujours la version 5.0.4, tout comme le package-lock nouvellement créé.


La console affiche même pendant l'installation > pixi.js@5.0.0-rc.3 postinstall PATH \ node_modules \ pixi.js> node scripts / support-pixi.js



0
votes

Réponse originale

Si vous avez absolument besoin de cette version, vous devez:

  • mettez à jour votre fichier package.json en "pixi.js": "5.0.0-rc.3" .
  • Supprimez le fichier package-lock.json ou npm-shrinkwrap.json existant.
  • Réexécuter npm i

En faisant cela, vous épinglez votre dépendance à cette version spécifique.

Consultez également cette calculatrice semver . Vous pouvez charger le package pixi.js. Entrez ensuite 5.0.0-rc.3 et ^ 5.0.0-rc.3 . Il vous montrera comment le ^ change le comportement de recherche de correspondances.

J'ai trouvé que la calculatrice aide souvent visuellement à mieux comprendre les mathématiques semver que la lecture de la documentation ne le fait pour certaines personnes.

J'espère que cela vous aidera!

Réponse mise à jour

Si vous regardez le fichier package-lock.json et regardez les dépendances pour pixi.js toutes les dépendances utilisent le ^ et n'épinglent pas la version à 5.0.0-rc3 . Au lieu de cela, ils sont forcés de passer à la dernière version du correctif, qui est 5.0.4 et un paramètre côté NPM / pixis, pas le vôtre.

    "pixi.js": {
      "version": "5.0.0-rc.3",
      "resolved": "https://registry.npmjs.org/pixi.js/-/pixi.js-5.0.0-rc.3.tgz",
      "integrity": "sha512-+B6ZMvJNEz/IoiC+BrwP9PsDonEAj4TOZw+yuZ/K8WQokcSm9uAp3PJ+6eFFWTjnkxsAcMP9tgldmDdTFoAF7w==",
      "requires": {
        "@pixi/accessibility": "^5.0.0-rc.3",
        "@pixi/app": "^5.0.0-rc.3",
        "@pixi/constants": "^5.0.0-rc.3",
        "@pixi/core": "^5.0.0-rc.3",
        "@pixi/display": "^5.0.0-rc.3",
        "@pixi/extract": "^5.0.0-rc.3",
        "@pixi/filter-alpha": "^5.0.0-rc.3",
        "@pixi/filter-blur": "^5.0.0-rc.3",
        "@pixi/filter-color-matrix": "^5.0.0-rc.3",
        "@pixi/filter-displacement": "^5.0.0-rc.3",
        "@pixi/filter-fxaa": "^5.0.0-rc.3",
        "@pixi/filter-noise": "^5.0.0-rc.3",
        "@pixi/graphics": "^5.0.0-rc.3",
        "@pixi/interaction": "^5.0.0-rc.3",
        "@pixi/loaders": "^5.0.0-rc.3",
        "@pixi/math": "^5.0.0-rc.3",
        "@pixi/mesh": "^5.0.0-rc.3",
        "@pixi/mesh-extras": "^5.0.0-rc.3",
        "@pixi/mixin-cache-as-bitmap": "^5.0.0-rc.3",
        "@pixi/mixin-get-child-by-name": "^5.0.0-rc.3",
        "@pixi/mixin-get-global-position": "^5.0.0-rc.3",
        "@pixi/particles": "^5.0.0-rc.3",
        "@pixi/polyfill": "^5.0.0-rc.3",
        "@pixi/prepare": "^5.0.0-rc.3",
        "@pixi/runner": "^5.0.0-rc.3",
        "@pixi/settings": "^5.0.0-rc.3",
        "@pixi/sprite": "^5.0.0-rc.3",
        "@pixi/sprite-animated": "^5.0.0-rc.3",
        "@pixi/sprite-tiling": "^5.0.0-rc.3",
        "@pixi/spritesheet": "^5.0.0-rc.3",
        "@pixi/text": "^5.0.0-rc.3",
        "@pixi/text-bitmap": "^5.0.0-rc.3",
        "@pixi/ticker": "^5.0.0-rc.3",
        "@pixi/utils": "^5.0.0-rc.3"
      }
    },

Il semble que si vous voulez que cela fonctionne, et je vous conseillerais simplement de mettre à jour votre application pour qu'elle fonctionne avec le package mis à jour au lieu de le faire, vous devrez

  • branchez pixi.js à la balise 5.0.0-rc3 , https://github.com/pixijs/pixi.js/tree/v5.0.0-rc.3
  • Mettez à jour le fichier package.json pour rendre toutes ses dépendances 5.0.0-rc.3 au lieu de ^ 5.0.0-rc.3
  • Créez une dépendance sur votre référentiel forké au lieu du module npm publié.


3 commentaires

Merci beaucoup! Malheureusement, j'ai fait toutes les étapes et il installe toujours le 5.0.4.


BTW: la calculatrice semver n'a montré que le 5.0.0-rc.3 et rien d'autre.


Je pense que je vois quel est le problème. J'ai mis à jour ma réponse pour refléter ce que je vois.



0
votes

TL; DR La solution est de spécifier explicitement les versions exactes des sous-modules @pixi dans votre package.json comme ceci:

...
    "@pixi/core": {
      "version": "5.0.4",
      "resolved": "https://registry.npmjs.org/@pixi/core/-/core-5.0.4.tgz",
      "integrity": "sha512-P2K2JJC+BFZrRZT9P0+Ir8jd7VrH6w7/L1Njg2+iSetW9TdjkPahR+w93VGwpEzEkrYHoNs6FbSFCY38P/6g8A==",
      "requires": {
        "@pixi/constants": "^5.0.4",
        "@pixi/display": "^5.0.4",
        "@pixi/math": "^5.0.4",
        "@pixi/runner": "^5.0.4",
        "@pixi/settings": "^5.0.4",
        "@pixi/ticker": "^5.0.4",
        "@pixi/utils": "^5.0.4"
      }
    },
...
    "pixi.js": {
      "version": "5.0.0-rc.3",
      "resolved": "https://registry.npmjs.org/pixi.js/-/pixi.js-5.0.0-rc.3.tgz",
      "integrity": "sha512-+B6ZMvJNEz/IoiC+BrwP9PsDonEAj4TOZw+yuZ/K8WQokcSm9uAp3PJ+6eFFWTjnkxsAcMP9tgldmDdTFoAF7w==",
      "requires": {
        "@pixi/accessibility": "^5.0.0-rc.3",
        "@pixi/app": "^5.0.0-rc.3",
        "@pixi/constants": "^5.0.0-rc.3",
        "@pixi/core": "^5.0.0-rc.3",
        "@pixi/display": "^5.0.0-rc.3",
        "@pixi/extract": "^5.0.0-rc.3",
        "@pixi/filter-alpha": "^5.0.0-rc.3",
        "@pixi/filter-blur": "^5.0.0-rc.3",
        "@pixi/filter-color-matrix": "^5.0.0-rc.3",
        "@pixi/filter-displacement": "^5.0.0-rc.3",
        "@pixi/filter-fxaa": "^5.0.0-rc.3",
        "@pixi/filter-noise": "^5.0.0-rc.3",
        "@pixi/graphics": "^5.0.0-rc.3",
        "@pixi/interaction": "^5.0.0-rc.3",
        "@pixi/loaders": "^5.0.0-rc.3",
        "@pixi/math": "^5.0.0-rc.3",
        "@pixi/mesh": "^5.0.0-rc.3",
        "@pixi/mesh-extras": "^5.0.0-rc.3",
        "@pixi/mixin-cache-as-bitmap": "^5.0.0-rc.3",
        "@pixi/mixin-get-child-by-name": "^5.0.0-rc.3",
        "@pixi/mixin-get-global-position": "^5.0.0-rc.3",
        "@pixi/particles": "^5.0.0-rc.3",
        "@pixi/polyfill": "^5.0.0-rc.3",
        "@pixi/prepare": "^5.0.0-rc.3",
        "@pixi/runner": "^5.0.0-rc.3",
        "@pixi/settings": "^5.0.0-rc.3",
        "@pixi/sprite": "^5.0.0-rc.3",
        "@pixi/sprite-animated": "^5.0.0-rc.3",
        "@pixi/sprite-tiling": "^5.0.0-rc.3",
        "@pixi/spritesheet": "^5.0.0-rc.3",
        "@pixi/text": "^5.0.0-rc.3",
        "@pixi/text-bitmap": "^5.0.0-rc.3",
        "@pixi/ticker": "^5.0.0-rc.3",
        "@pixi/utils": "^5.0.0-rc.3"
      }
    },
...


5 commentaires

Merci pour votre réponse! Je l'ai spécifié dans package.json, j'ai supprimé le verrou et les node_modules et j'ai exécuté npm i mais mon package-lock ne ressemble pas au vôtre et si j'ouvre l'application, il affiche toujours 5.0.4. À présent, je suis vraiment désolé, j'espérais que votre solution fonctionnerait: |


Si je fais les étapes exactes comme vous l'avez fait dans une nouvelle application, le verrouillage du package a le même aspect!


@creyD J'ai ajouté une note à ma réponse car j'avais du mal à rédiger un long commentaire depuis l'application mobile.


Oh, attendez! Je dois ajouter chaque sous-module au package.json? Je pensais que le module global et le noyau étaient suffisants. Je vais l'essayer maintenant!


Cela a fonctionné et a résolu le problème. J'ai ajouté toutes les dépendances et modules et réinstallé et la version était finalement 5.0.0-rc.3