V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
firhome
V2EX  ›  Node.js

npm 的模块升级或更新以后导致不兼容了怎么办?

  •  
  •   firhome · 2017-11-09 14:41:11 +08:00 · 4969 次点击
    这是一个创建于 2353 天前的主题,其中的信息可能已经有所发展或是发生改变。
    我现在有一个项目,之前引用了几个第三方模块,结果同事把 package.json 拿过去自己 npm install 的时候发现项目不能使用了。

    检查之后才发现是几个模块更新了导致不兼容了。

    现在该如何解决呢? 一个一个模块去指定版本改 package.json 太麻烦了。 有没有什么快捷的方式?
    8 条回复    2017-11-10 09:18:18 +08:00
    Mutoo
        1
    Mutoo  
       2017-11-09 15:13:54 +08:00
    1 ) npm shrinkwrap
    2 )使用最新版的 npm
    3 )使用 yarn

    会生成相应的 lockfile 锁定当前使用的版本。
    WispZhan
        2
    WispZhan  
       2017-11-09 15:20:13 +08:00
    package.json 里没有指明具体版本号的升级策略? ^x.x.x,~x.x.x 或者直接写死某个具体版本号 x.x.x。

    对于这种 升级了就不兼容的第三方库,一般升级策略比较保守,不应该直接用通配代替具体版本。
    est
        3
    est  
       2017-11-09 15:31:12 +08:00
    重写。工作量来了。
    duan602728596
        4
    duan602728596  
       2017-11-09 15:58:17 +08:00 via iPhone
    哪些模块更新了?
    tongjun
        5
    tongjun  
       2017-11-09 18:58:18 +08:00
    不要升级
    npm shrinkwrap 不好用,新版的 npm 会生成 package-lock.json 来锁定版本号
    firhome
        6
    firhome  
    OP
       2017-11-10 09:17:12 +08:00
    @tongjun 那我现在直接升级 npm 就可以了吗? 现在就我本地机器上的 node_modules 里的模块是正确的。那我升级后怎么把本地的版本导出来呢?
    firhome
        7
    firhome  
    OP
       2017-11-10 09:17:39 +08:00
    @duan602728596 一些依赖 vue 的第三方模块,因为 vue 的升级,导致这些第三方模块一些写法报错
    firhome
        8
    firhome  
    OP
       2017-11-10 09:18:18 +08:00
    @WispZhan 是哎,当初也只是练练手做的一个配置,没想到直接在项目中用了。。。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2014 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 16:14 · PVG 00:14 · LAX 09:14 · JFK 12:14
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.