webentwicklung-frage-antwort-db.com.de

npm install lösche das Reaktiver-Objekt in node_modules

Ich habe ein Problem, wenn ich npm install zur Installation von redux in meinem react-native-Projekt verwenden möchte. Bei jedem Ausführen von npm install redux --save wird das react-native-Verzeichnis in node_modules gelöscht.

Dann verwende ich rm -rf node_modules && npm install das alles react-native-Paket wird nicht in node_modules installiert, daher muss ich das Projekt neu erstellen.

Ich versuche auch, & react-redux und redux in node_modules aus einem anderen Projekt in mein aktuelles react-native-Projekt zu kopieren. Aber es kann nicht erfolgreich sein, der Fehler führte mich zum issue auf github. Ich bin dieser Hilfe gefolgt und sie scheitert auch.

Einige andere Informationen:

Npm: 5.0.3

-Reag-native-cli: 2.0.1

➜ reaktionsnativ: 0,45,0

➜ package.json

{
    "name": "MyProjectNAME",
    "version": "0.0.1",
    "private": true,
    "scripts": {
        "start": "node node_modules/react-native/local-cli/cli.js start",
        "test": "jest"
    },
    "dependencies": {
        "react": "16.0.0-alpha.12",
        "react-native": "0.45.0",
        "react-redux": "^5.0.5",
        "redux": "^3.6.0"
    },
    "devDependencies": {
        "babel-cli": "^6.24.1",
        "babel-jest": "20.0.3",
        "babel-preset-es2015": "^6.24.1",
        "babel-preset-es2017": "^6.24.1",
        "babel-preset-react-native": "1.9.2",
        "jest": "20.0.4",
        "react-test-renderer": "16.0.0-alpha.12"
    },
    "jest": {
        "preset": "react-native"
    }
}

Jeder Vorschlag wird geschätzt. Vielen Dank

3
Robust

Ich bin froh, dass Sie dieses Problem mit einer Problemumgehung gelöst haben. Erlauben Sie mir jedoch zu erläutern, warum das reaktionsinterne Modul beim Ausführen von npm install redux --save entfernt wurde.

Lösung:

  1. Verschieben Sie die package-lock.json aus dem Projektordner (löschen Sie sie noch nicht, da Sie sie später prüfen müssen)
  2. rm -rf node_modules && npm install ausführen
  3. Überprüfen Sie die/node_modules, und Reactor-native sollte jetzt vorhanden sein
  4. Führen Sie npm install redux (npm v5 wird standardmäßig --save) aus, um redux zu installieren, ohne dass vorhandene Module entfernt werden

Was ist package-lock.json?

Es gibt eine Reihe von Änderungen für npm v5, die Sie hier lesen können hier . Eine davon generiert package-lock.json (lockfile), wenn npm/node_modules oder package.json ändert. 

Mit package-lock.json erhält jeder, der npm install (v5) ausführt, genau die gleiche node_modules-Struktur, in der Sie entwickelt haben. Sie müssten also auch diese Datei festschreiben.

Warum wurden reaktives Modul und andere entfernt, nachdem npm install somePackageName ausgeführt wurde, obwohl sie in package.json definiert sind?

Die Entfernung erfolgte, weil Ihre vorhandenen Knotenmodule vor npm v5 installiert wurden. Wenn Sie mit npm v5 ein Modul installieren (z. B. npm install redux), werden Sie drei Dinge bemerken:

  1. package-lock.json wird generiert (oder wenn vorhanden, aktualisiert). Redux und seine Abhängigkeiten werden darin gespeichert.
  2. Die package.json von redux unterscheidet sich von Knotenmodulen, die vor npm v5 installiert wurden (einige zusätzliche Felder sind mit _ versehen, z. B. _from, _requiredBy, _resolved usw.).
  3. Schließlich wird jedes vor v5 installierte Modul entfernt, was vermutlich auf die fehlenden zusätzlichen Felder in seiner package.jsonUNDzurückzuführen ist, die in der neu generierten package-lock.json nicht vorhanden sind.

Durch erneutes Ausführen von rm -rf node_modules && npm install wird das Problem aufgrund der Datei package-lock.json nicht behoben (Denken Sie daran, dass nur redux und seine Abhängigkeiten in der Datei gespeichert wurden. Sie können die alte package-lock.json überprüfen.)

Hoffe, das könnte jemand anderem helfen.

7
max23_

Zum Schluss habe ich dieses Problem in zwei Schritten gelöst:

1) Erstellen Sie ein Reaktjs-Projekt und installieren Sie redux

2) Kopieren Sie den gesamten Inhalt von node_modules in Schritt 1 und fügen Sie ihn in mein aktuelles react-native-Projekt ein.

App neu laden Alles funktioniert gut.

0
Robust