"immer": "^8.0.4",版本过低,扫描有安全问题,能不能升级一下到9.0.6
weiweipeng opened this issue · 15 comments
What happens?
最小可复现仓库
请使用
yarn create umi
创建,选择app
,然后选上dva
,并上传到你的 GitHub 仓库
复现步骤,错误日志以及相关配置
相关环境信息
- Umi 版本:
- Node 版本:
- 操作系统:
希望能升级啊
一方面可以在package.json中强制指定immer
{
"dependencies": {
"dva-immer": "^1.0.0"
},
"resolutions": {
"dva-immer/immer": "^9.0.6"
}
}
另一方面,考虑弃坑 #2490
我试过了,这个方法不行呢!我用的是umi框架,里面直接内嵌dva,坑死
如果直接依赖不是dva-immer
,则需要一层层传递下去,
{
"你的依赖/中间依赖a/b/c/immer": "^9.0.6"
}
中间依赖需要你自己去yarn.lock
文件中找
试过了大佬的方法,.lock文件版本已经到9.0.6,但是node_modules immer版本还是8.0.4
试过了大佬的方法,.lock文件版本已经到9.0.6,但是node_modules immer版本还是8.0.4
不,你要看目录 node_modules/dva-immer/node_modules/immer
里的版本号,其实是已经成功切换到指定版本了。
{
"resolutions": {
"umi-plugin-react/umi-plugin-dva/dva-immer/immer": "^9.0.6"
}
}
试过了大佬的方法,.lock文件版本已经到9.0.6,但是node_modules immer版本还是8.0.4
不,你要看目录
node_modules/dva-immer/node_modules/immer
里的版本号,其实是已经成功切换到指定版本了。{ "resolutions": { "umi-plugin-react/umi-plugin-dva/dva-immer/immer": "^9.0.6" } }
一切都是以node_modules/dva-immer/node_modules/immer版本号为主,lock文件夹里面的版本号不能作为依据?
你可能不太清楚require的规则 http://nodejs.cn/api/modules/loading_from_node_modules_folders.html
然后就是umi项目里,依赖到immer的地方太多,各个immer版本都有,所以lock文件里应该是有很多immer的并且都不兼容
yarn why immer
你可能不太清楚require的规则 http://nodejs.cn/api/modules/loading_from_node_modules_folders.html
然后就是umi项目里,依赖到immer的地方太多,各个immer版本都有,所以lock文件里应该是有很多immer的并且都不兼容
yarn why immer
嗯嗯,是的,dva-immer里面的immer插件还是不行,那边依赖的8.0.4版本直接按需下载在dva-immer的node_modules,好像没办法强行修改它的依赖
你可能不太清楚require的规则 http://nodejs.cn/api/modules/loading_from_node_modules_folders.html
然后就是umi项目里,依赖到immer的地方太多,各个immer版本都有,所以lock文件里应该是有很多immer的并且都不兼容yarn why immer嗯嗯,是的,dva-immer里面的immer插件还是不行,那边依赖的8.0.4版本直接按需下载在dva-immer的node_modules,好像没办法强行修改它的依赖
还有一个办法就是把所有用到immer的库都加入到resolutions
强行升级,这样肯定只有一个immer。
另外考虑弃坑
你可能不太清楚require的规则 http://nodejs.cn/api/modules/loading_from_node_modules_folders.html
然后就是umi项目里,依赖到immer的地方太多,各个immer版本都有,所以lock文件里应该是有很多immer的并且都不兼容yarn why immer嗯嗯,是的,dva-immer里面的immer插件还是不行,那边依赖的8.0.4版本直接按需下载在dva-immer的node_modules,好像没办法强行修改它的依赖
还有一个办法就是把所有用到immer的库都加入到
resolutions
强行升级,这样肯定只有一个immer。 另外考虑弃坑
"resolutions": {
"plugin-dva/dva-immer/immer": "^9.0.6",
"immer": "^9.0.6",
"isomorphic-fetch/node-fetch": "^3.1.1",
"node-fetch": "^3.1.1"
},
试过了,还是不行,内部嵌入依赖好像没办法强行修改,弃坑是来不及了,项目都要上架了,太难了,这个坑挖的,umi框架能不能在运行时去掉,只安装node相关的?
你这个resolutions写的。。。plugin-dva是你自己装的吗?
我昨天创建的umi项目,按照这个配置,可以把所有immer统一到9.0.6
{
"resolutions": {
"umi-plugin-react/umi-plugin-dva/dva-immer/immer": "^9.0.6",
"umi/umi-ui/react-dev-utils/immer": "^9.0.6",
"umi-plugin-react/umi-plugin-ui/immer": "^9.0.6",
"umi/umi-build-dev/umi-plugin-ui/immer": "^9.0.6"
}
}
然后lock文件会呈现出下面的状态
# yarn.lock
immer@1.10.0, immer@^2.1.1, immer@^5.0.0, immer@^9.0.6:
version "9.0.14"
resolved "https://registry.yarnpkg.com/immer/-/immer-9.0.14.tgz#e05b83b63999d26382bb71676c9d827831248a48"
integrity sha512-ubBeqQutOSLIFCUBN03jGeOS6a3DoYlSYwYJTa+gSKEZKU5redJIqkIdZ3JVv/4RZpfcXdAWH5zCNLWPRv2WDw==
如果还不行,说明你的其它插件里也带了immer,需要你在yarn.lock里找到并写进resolutions。记住,开头必须是你自己装的插件
谢谢大佬,之前大概是用npm,改成了yarn就好了
新项目考虑换成这个库,带你飞:https://github.com/foca-js/foca
新项目考虑换成这个库,带你飞:https://github.com/foca-js/foca
可以的,下次项目试试大佬的,以后再也不用这个库了,太坑了!