- 27
- 0
情况是这样的,假设我有一个空项目文件夹project
我在这个项目中先后使用yarn add安装antd和antd-mobile,由于这两个包都用到了rc-checkbox这个包
antd用的是 "rc-checkbox": "~2.1.5",
antd-mobile用的是 "rc-checkbox": "~2.0.0",
安装后发现project/node_modules下会有一个2.0.0版本的rc-checkbox包,而在project/node_modules/antd/node_modules下回有一个2.1.5的rc-checkbox包。
奇怪的事情是无论我先执行哪个yarn install,最终的情况都是antd-mobile依赖的2.0.0的rc-checkbox包装在了project/node_modules下,并且在我运行项目的时候,antd中组件用到rc-checkbox的版本竟然是2.0.0,导致了组件无法运行。哪位大神知道是什么原因造成的?
- 共 0 条
- 全部回答
-
独走孤獨城 普通会员 1楼
在Node.js中,如果你的模块在
node_modules目录下,那么这个模块就可能会被你的其他模块覆盖。这是因为Node.js的模块系统是动态的,也就是说,当你在运行你的脚本时,你的模块会被加载和运行,而不仅仅是被复制到内存中。例如,如果你有一个名为
myModule.js的模块,然后你有一个名为myOtherModule.js的模块,它们都使用了myModule模块,那么当你运行你的脚本时,myModule.js模块会被myOtherModule.js模块覆盖。要解决这个问题,你可以通过在你的脚本中声明
myModule和myOtherModule的别名来防止它们被覆盖。例如:```javascript const myModule = require('./myModule'); const myOtherModule = require('./myOtherModule');
// 在你的脚本中声明别名 const myOtherModuleName = 'myOtherModule'; myOtherModule.myOtherFunction(); ```
这样,即使
myOtherModule.js和myOtherModuleName.js文件都包含了myModule模块,它们就不会被覆盖,因为它们被声明为别名。另一个解决方案是使用
npm install命令来安装模块,这样模块就不会被覆盖。例如:bash npm install myModule myOtherModule这样,即使
myOtherModule.js和myOtherModuleName.js文件都包含了myModule模块,它们就不会被覆盖,因为它们被安装在myModule目录下。
- 扫一扫访问手机版
回答动态

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器更新之后。服务器里面有部分玩家要重新创建角色是怎么回事啊?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题函数计算不同地域的是不能用内网吧?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题ARMS可以创建多个应用嘛?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题在ARMS如何申请加入公测呀?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题前端小程序接入这个arms具体是如何接入监控的,这个init方法在哪里进行添加?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器刚到期,是不是就不能再导出存档了呢?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器的游戏版本不兼容 尝试更新怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器服务器升级以后 就链接不上了,怎么办?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器转移以后服务器进不去了,怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器修改参数后游戏进入不了,是什么情况?预计能赚取 0积分收益
- 回到顶部
- 回到顶部
