簡體   English   中英

npm install 清除 node_modules 中的 react-native

[英]npm install clear the react-native in node_modules

嘗試使用npm installredux安裝到我的react-native項目時遇到問題。 每當我運行npm install redux --savenode_modulesreact-native目錄node_modules將被清除。

然后我使用rm -rf node_modules && npm install所有react-native包都沒有安裝在node_modules所以我必須重新創建項目。

我還嘗試將node_modules react-reduxredux從另一個項目復制並過去復制到我當前的react-native項目。 但它無法成功,該錯誤將我引向了 github 上的問題 我遵循了這個幫助,但它也失敗了。

一些其他信息:

➜ npm: 5.0.3

➜ react-native-cli: 2.0.1

➜ 反應原生: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"
    }
}

任何建議表示贊賞。 謝謝

很高興您使用變通方法解決了這個問題,但請允許我解釋為什么在您運行npm install redux --save時刪除了 react-native 模塊。

解決方法:

  1. 將 package-lock.json 移出項目文件夾(不要刪除它,因為您稍后需要檢查它)
  2. 運行rm -rf node_modules && npm install
  3. 檢查 /node_modules 和 react-native 現在應該在那里
  4. 運行npm install redux (npm v5 默認情況下將 --save )安裝 redux 而不刪除現有模塊

什么是 package-lock.json?

npm v5 有很多更改,您可以在此處閱讀。 其中之一是每當 npm 修改 /node_modules 或 package.json 時生成 package-lock.json (lockfile)。

使用 package-lock.json,任何運行npm install (v5) 的人都將獲得與您正在開發的完全相同的 node_modules 樹。 所以,你也必須提交這個文件。

為什么 react-native 模塊和其他模塊在運行npm install somePackageName后被刪除,即使它們是在 package.json 中定義的?

刪除是因為您現有的節點模塊是在 npm v5 之前安裝的。 如果您使用 npm v5 安裝模塊(例如npm install redux ),您會注意到三件事:

  1. package-lock.json 將被生成(或更新,如果存在)。 Redux 及其依賴項都保存在其中。
  2. redux 的 package.json 不同於 npm v5 之前安裝的節點模塊(一些額外的字段以 _ 為前綴,例如 _from、_requiredBy、_resolved 等)。
  3. 最后,在 v5 之前安裝的任何模塊都將被刪除,我猜這是因為它的 package.json 中缺少額外的字段並且在新生成的 package-lock.json 中不存在。

所以,再次運行rm -rf node_modules && npm install不會解決問題,因為 package-lock.json 文件(記得只有 redux 和它的依賴被保存到文件中?你可以檢查舊的 package-lock.json)

希望這可以幫助別人。

最后,我通過2個步驟解決了這個問題:

1)創建一個reactjs項目並安裝redux

2) 復制步驟 1 中node_modules所有內容並粘貼到我當前的react-native項目中。

重新加載應用程序。 一切正常。

如果您使用紗線創建應用程序,它將被刪除。 如果您使用 yarn 創建了應用程序,請運行 yarn add react-redux 而不是 npm install react-redux

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM