【问题标题】:Wrong package.json path when npm install in react native projectnpm install 在 react native 项目中时 package.json 路径错误
【发布时间】:2017-05-20 18:58:17
【问题描述】:

我发现当我在 react native 项目的根目录下运行 npm install 时,它总是向我显示警告:

npm WARN enoent ENOENT:没有这样的文件或目录,打开 '/Users/chen/Documents/react-native/project/node_modules/node_modules/package.json'

但我们知道 package.json 应该在 node_modules 文件夹下

这是我在项目根目录中的package.json

{
  "name": "project",
  "version": "0.0.1",
  "private": true,
  "scripts": {
    "start": "node node_modules/react-native/local-cli/cli.js start",
    "test": "jest",
    "bundle-ios": "node node_modules/react-native/local-cli/cli.js bundle --entry-file index.ios.js  --platform ios --dev false --bundle-output ./ios/bundle/index.ios.jsbundle --assets-dest ./ios/bundle"
  },
  "dependencies": {
    "react": "~15.4.0-rc.4",
    "react-native": "0.40.0",
    "react-native-elements": "^0.9.0",
    "react-native-scrollable-tab-view": "^0.7.0",
    "react-native-swiper": "^1.5.4",
    "react-native-vector-icons": "^4.0.0"
  },
  "devDependencies": {
    "babel-jest": "18.0.0",
    "babel-preset-react-native": "1.9.1",
    "jest": "18.1.0",
    "react-test-renderer": "~15.4.0-rc.4"
  },
  "jest": {
    "preset": "react-native"
  }
}

这个 json 一切正常,运行 npm install 后,该库将附加依赖项。

并且在node_modules文件夹中还有另一个package.json,当我运行npm install时这个json不会更新,错误说它指向node_modules/node_modules/package.json,当然不存在这个文件

{
  "dependencies": {
    "react-native-scrollable-tab-view": "^0.7.0",
    "react-native-swiper": "^1.5.4",
    "react-native-vector-icons": "^4.0.0",
    "react-native-elements": "^0.9.0"
  }
}

那么 npm install 是如何找到错误路径的呢??

【问题讨论】:

    标签: node.js npm npm-install package.json


    【解决方案1】:

    package.json 模块应该存在于项目的root 目录中。也就是说,如果您想为您的项目安装所有 npm 依赖项。

    实际上当你运行npm install时,它会搜索package.json文件,并安装所有写入该文件的dependencies。因此,无论您在何处运行 npm install ,该目录中都应该有一个 package.json 文件。

    因此,为简单起见,我们将package.json 文件保留在project 的根目录下,以便npm 一次性安装该项目所需的所有依赖项。

    更新:

    每个node module 都有自己的package.json 文件和node_modules 文件夹,这就是它的工作方式。 package.json 包含该模块所需的所有 dependenciesnode_modules 文件夹将包含这些模块。同样,如果你再深入一层,你会发现另一个 package.json 文件。因此,所有这些package.json 都包含特定module 所需的依赖项。

    尝试进入node_modules文件夹并探索它,你会更好地理解它。

    【讨论】:

    • 是的,根目录中有一个package.json。但在 node_module 文件夹中也有一个,那么它是做什么用的呢?
    • 您是否了解您遇到的问题,我的回答是否解决了您的疑问?
    • 您可以使用 --prefix 选项指定 npm install 的路径。但请确保正确命名文件。
    【解决方案2】:

    项目根目录下有个package.json。

    那么node_modules下的每个模块都有一个。

    但我认为你不应该在 node_modules 文件夹中有 package.json

      /
        package.json
        /node_modules
                       <-- no package.json here
          /module1
            package.json
          /module2
            package.json
    

    【讨论】:

      猜你喜欢
      • 2021-02-05
      • 1970-01-01
      • 2018-02-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-20
      • 2021-08-05
      相关资源
      最近更新 更多