npm install在node_modules

时间:2017-06-10 11:36:50

标签: react-native npm redux npm-install

尝试使用npm installredux安装到我的react-native项目时遇到问题。每次运行npm install redux --save react-native内的node_modules目录都将被清除。

然后我使用rm -rf node_modules && npm install所有react-native包未安装在node_modules内,所以我必须重新创建项目。

我也试着复制&从另一个项目到我当前的react-redux项目的redux中的node_modulesreact-native过去了。但它不能成功,错误将我带到github上的issue。我听了这个帮助,也失败了。

其他一些信息:

➜npm:5.0.3

➜alid-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"
    }
}

任何建议表示赞赏。谢谢

3 个答案:

答案 0 :(得分:9)

很高兴您使用解决方法解决了这个问题,但请允许我解释为什么在您运行.screen-width{ min-height: 768px !important; min-width: 1366px !important; }时删除了react-native模块。

<强>解决方案:

  1. 将package-lock.json移出项目文件夹(暂不删除它,因为稍后需要对其进行检查)
  2. 运行npm install redux --save
  3. 检查/ node_modules和react-native现在应该在那里
  4. 运行rm -rf node_modules && npm install(npm v5将默认设置为 - )以安装redux而不删除现有模块
  5. 什么是package-lock.json?

    npm v5有很多变化,你可以读它here。其中一个是在npm修改/ node_modules或package.json时生成package-lock.json(lockfile)。

    使用package-lock.json,运行npm install redux(v5)的任何人都将获得与您正在开发的完全相同的node_modules树。所以,你也必须提交这个文件。

    为什么反应原生模块和其他模块在运行npm install后被删除,即使它们是在package.json中定义的?

    由于您在npm v5之前安装了现有节点模块,因此删除了。如果您使用npm v5安装模块(例如npm install somePackageName),您会注意到三件事:

    1. 将生成package-lock.json(如果存在则更新)。 Redux及其依赖项保存在其中。
    2. redux的package.json与npm v5之前安装的节点模块不同(一些额外的字段前缀为_例如_from,_requiredBy,_resolved等。)
    3. 最后,在v5之前安装的任何模块都将被删除,我猜这是因为其package.json AND 在新生成的package-lock.json中不存在。< / LI>

      因此,再次运行npm install redux将无法解决问题,因为package-lock.json文件(请记住只有redux及其依赖项已保存到文件中?您可以检查旧的package-lock.json)

      希望这可能有助于其他人。

答案 1 :(得分:0)

最后,我通过两个步骤解决了这个问题:

1)创建reactjs项目并安装redux

2)在步骤1中复制node_modules的所有内容并粘贴到我当前的react-native项目中。

重新加载应用。一切都运作良好。

答案 2 :(得分:0)

如果使用yarn创建应用程序,它将被删除。如果您是使用yarn创建的应用程序,请运行yarn add react-redux而不是npm install react-redux