在重新整理项目中的包依赖时,感觉在官方项目中使用^或~似乎不太靠谱,因为我永远不知道实际打包结果是否正确。一个没有安全感的人,总能想到很多风险。比如一个家伙在新版本中恶意注入“rm*-rf”这样的代码,那我们的项目就不是悲剧了。为了安全起见,我锁定了所有依赖版本。按照npm的机制,这还是不能把所有的入口都堵住,除非把所有依赖包的package.json中的版本依赖也都锁上。当然这是不可能的。但是,风险仍然很小。赶紧改了package.json的内容,然后跑项目(希望大神保佑)。不幸的是,发生错误:ERRORin./~/rc-tooltip/lib/Tooltip.jsModulenotfound:Error:Cannotresolvemodule'babel-runtime/helpers/classCallCheck'in\node_modules\rc-tooltip\lib@./~/rc-tooltip/lib/Tooltip.js15:23-70ERRORin./~/rc-tooltip/lib/Tooltip.jsModulenotfound:Error:Cannotresolvemodule'babel-runtime/helpers/possibleConstructorReturn'in\node_modules\rc-tooltip\lib@./~/rc-tooltip/lib/Tooltip.js19:34-92ERRORin./~/rc-tooltip/lib/Tooltip.jsModulenotfound:Error:无法解析模块'babel-runtime/helpers/objectWithoutProperties'in\node_modules\rc-tooltip\lib@./~/rc-tooltip/lib/Tooltip.js11:32-88看到上面的错误提示是babel-runtime的问题,我是顿时迷茫。之前我是对的,但是锁定版本后,babel-runtime跪下了?马上查看babel-runtime的源码,发现确实没有classCallCheck等文件。是不是版本有问题?看了版本,发现babel-runtime的版本居然是4.7.3,什么鬼!现在的版本已经是6.23.0了,绝对不对。查看babel-runtime的依赖源,发现是在一个'confit'组件中引用的,那么rc-tooltip和confit引用babel-runtime这两个组件有冲突。解决方法:在项目package.json中定义babel-runtime的版本为6.23.0
