从新梳理项目中的包依赖时,以为使用^
或者~
在正式项目中彷佛不靠谱,由于永远不知道真正打包的结果是否是对的。一个没有什么安全的感人,总能想到不少风险,例若有个家伙在新版本中恶意注入了"rm * -rf"这样的代码,那么咱们的项目不是悲剧了。为了稳妥,我锁住了全部依赖的版本。根据npm的机制而言,这样仍是堵不住全部入口的,除非把全部的依赖包的package.json中的版本依赖也锁住。固然这是不可能的。不过,风险仍是会小一点的。node
很快就改好了package.json的内容,而后把项目跑起来(但愿上帝保佑吧)遗憾的是,出现错误:npm
ERROR in ./~/rc-tooltip/lib/Tooltip.js Module not found: Error: Cannot resolve module 'babel-runtime/helpers/classCallCheck' in \node_modules\rc-tooltip\lib @ ./~/rc-tooltip/lib/Tooltip.js 15:23-70 ERROR in ./~/rc-tooltip/lib/Tooltip.js Module not found: Error: Cannot resolve module 'babel-runtime/helpers/possibleConstructorReturn' in \node_modules\rc-tooltip\lib @ ./~/rc-tooltip/lib/Tooltip.js 19:34-92 ERROR in ./~/rc-tooltip/lib/Tooltip.js Module not found: Error: Cannot resolve module 'babel-runtime/helpers/objectWithoutProperties' in \node_modules\rc-tooltip\lib @ ./~/rc-tooltip/lib/Tooltip.js 11: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.0json