如果 `redux` 不在 package.json 或 package-lock.json 或 node_modules 中,为啥从 'redux' 导入任何东西仍然有效?

Posted

技术标签:

【中文标题】如果 `redux` 不在 package.json 或 package-lock.json 或 node_modules 中,为啥从 \'redux\' 导入任何东西仍然有效?【英文标题】:If `redux` is not in package.json or package-lock.json or node_modules, how come importing anything from 'redux' still works?如果 `redux` 不在 package.json 或 package-lock.json 或 node_modules 中,为什么从 'redux' 导入任何东西仍然有效? 【发布时间】:2020-06-26 14:56:48 【问题描述】:

我的项目中有一行:

import  createStore  from 'redux';

但是package.json 没有redux(它只有react-redux)。在package-lock.json 和文件夹node_modules 中也是如此。

此外,它不会全局安装,因为如果我这样做了

npm list -g redux

它显示它没有安装:

/usr/local/lib
└── (empty)

那么为什么我们仍然可以从redux 导入东西呢?

附注我仔细检查了 http://localhost:3000/static/js/0.chunk.js 并将redux 列为"../../../node_modules/redux/..."react-redux 列为"./node_modules/react-redux/... 所以我仔细检查了我的项目的两个级别,在我的主目录中,有一个@987654335 @文件夹......所以看起来它可以“上升”来寻找node_modules?那样会很危险吗?但另一方面,如果我们想开发几个实验性的 React 应用程序,而不重复相同的 node_modules,每个大约 200MB,是否有用?

【问题讨论】:

我想如果你用 yarn 安装 yarn.lock 会有 redux 并且会告诉你它的位置。 @HMR 如果我做yarn install,那么我的yarn.lock 也只有react-redux@^7.2.0 但没有redux 【参考方案1】:

因为它是a peer dependency of react-redux,并且确实出现在node_modules/redux/index(在项目文件夹中)中,因为必须安装对等依赖项才能使用相关包。

"peerDependencies": 
    "react": "^16.8.3",
    "redux": "^2.0.0 || ^3.0.0 || ^4.0.0-0"

【讨论】:

但在我的node_modules 中没有redux 我很确定您没有找对地方,没有任何可生产的示例/屏幕截​​图无法帮助您。 $ ls node_modules/redux ls: node_modules/redux: No such file or directory 为什么会在全局范围内?如答案中所述,它位于您的项目目录中的node_modules 另外,我在自己的项目中检查了答案

以上是关于如果 `redux` 不在 package.json 或 package-lock.json 或 node_modules 中,为啥从 'redux' 导入任何东西仍然有效?的主要内容,如果未能解决你的问题,请参考以下文章

redux devtools 不在扩展 devtools 选项卡中显示状态

Redux thunk 不在数组上显示数据

React Native - NavigationActions.navigate() 不在 redux 中导航

React-Native with Redux:API 对象出现在我的 console.log 中,但不在我的视图中

React学习笔记 Redux

服务端和客户端的 Package.json