升级了一下 node,出大问题了 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
LxnChan
V2EX    Node.js

升级了一下 node,出大问题了

  •  
  •   LxnChan 2022-01-22 11:44:53 +08:00 13642 次点击
    这是一个创建于 1432 天前的主题,其中的信息可能已经有所发展或是发生改变。

    自己的 blog基于 Hexo ,由于各种东西都一直没更新(除了内容文章),所以一直也没升级 node.js ,也没有 node.js 相关的项目。最近突然有个项目需要用到 latest 版本的 node ,就在官网更新了,然后我自己的 blog 就没法再 Generate 了。

    MyUsername@My-Laptop MINGW64 /d/blog (main) $ hexo clean&&hexo g (node:7552) [DEP0128] DeprecationWarning: Invalid 'main' field in 'D:\blog\node_modules\jsftp\package.json' of './jsftp.js'. Please either fix that or report it to the module author (Use `node --trace-deprecation ...` to show where the warning was created) INFO Deleted database. INFO Deleted public folder. (node:2648) [DEP0128] DeprecationWarning: Invalid 'main' field in 'D:\blog\node_modules\jsftp\package.json' of './jsftp.js'. Please either fix that or report it to the module author (Use `node --trace-deprecation ...` to show where the warning was created) INFO Start processing D:\blog\source\_data\bangumis.json INFO 167 bangumis have been loaded INFO Generating urls for last 100 posts 

    旧的 node 版本是node-v12.18.1-x64,新的版本我装的是node-v16.13.2-x64,然后我把node_modules文件夹删掉后执行npm install,也会报错,日志有点长,点击此处获取。

    不知道是否能隔离两个项目的 node 版本(系统是 Windows 10 Pro )或者让 blog 支持新版本的 node 。

    第 1 条附言    2022-01-22 14:55:07 +08:00
    感谢 5 楼,现在已经换 nvm 切换各个 node 版本了。
    32 条回复    2022-01-24 08:42:27 +08:00
    1daydayde
        1
    1daydayde  
       2022-01-22 11:47:49 +08:00
    关键词:hexo nodejs14

    解决方法:回滚 nodejs 到 12
    newbieRenew
        2
    newbieRenew  
       2022-01-22 11:50:07 +08:00 via iPhone   1
    都不用 nvm ?
    kidonng
        3
    kidonng  
       2022-01-22 11:52:03 +08:00 via Android
    Volta
    ayase252
        4
    ayase252  
       2022-01-22 11:52:39 +08:00 via iPhone
    升级下 hexo 呗
    CptDoraemon
        5
    CptDoraemon  
       2022-01-22 11:53:36 +08:00   3
    CptDoraemon
        6
    CptDoraemon  
       2022-01-22 11:55:41 +08:00   3
    Biwood
        7
    Biwood  
       2022-01-22 12:00:59 +08:00   1
    node 真别随便升级,硬要升级的话,确保 package-lock.json 完好无损
    throns
        8/span>
    throns  
       2022-01-22 12:04:41 +08:00 via iPhone   4
    @CptDoraemon 推荐一个更优秀的替代品 https://github.com/Schniz/fnm ,nvm 严重拖慢 terminal 启动速度
    otakustay
        9
    otakustay  
       2022-01-22 12:59:36 +08:00
    Node 毕竟是个运行时,这和 Java 升个级、.NET 升个级一个道理,一定是会出大大小小的问题的,不能把它等同于工具库升个级这么简单
    Trim21
        10
    Trim21  
       2022-01-22 13:00:14 +08:00 via Android
    这是哪个依赖还在坚守 node-sass…
    KagurazakaNyaa
        11
    KagurazakaNyaa  
       2022-01-22 13:03:14 +08:00
    不如试试 docker ,把这些都丢到容器里跑,环境就稳定了
    awsl2333
        12
    awsl2333  
       2022-01-22 13:14:26 +08:00 via iPhone
    可以装多个 node 吧,n 切换下
    chunqiuyiyu
        13
    chunqiuyiyu  
       2022-01-22 13:31:57 +08:00
    我也是因为这个原因,所以把 Hexo 换了。
    wonderfulcxm
        14
    wonderfulcxm  
       2022-01-22 13:32:56 +08:00 via iPhone
    @throns nvm 确实会对终端启动速度有影响,我用 zsh ,可以用 zsh-nvm 这个 plugin 实现 nvm 的 Lazy Loading ,速度提升明显。
    lixuanyy
        15
    lixuanyy  
       2022-01-22 14:05:11 +08:00 via iPhone
    歪个楼,我一直觉得 hugo 挺好用的
    zzzain46
        16
    zzzain46  
       2022-01-22 14:17:49 +08:00   1
    换 hugo
    uni
        17
    uni  
       2022-01-22 14:18:11 +08:00
    node-sass 的问题,我一般用 sass 代替 node-sass 就行了
    但是 hexo 没用过,不知道怎么搞
    kidult
        18
    kidult  
       2022-01-22 15:04:56 +08:00
    前端随便升级 node 可是一个禁忌
    xratzh
        19
    xratzh  
       2022-01-22 15:08:11 +08:00 via Android
    最近重装 ghost 发展 node 真滴难,动不动就升级
    reallynyn
        20
    reallynyn  
       2022-01-22 15:20:25 +08:00
    没用过 node ,谁能解释下为啥会出现 Invalid 'main' field ?
    LxnChan
        21
    LxnChan  
    OP
       2022-01-22 15:21:26 +08:00
    @kidult 没怎么接到过 node 的项目不太清楚能不能升级
    @Biwood 怎么说确保 package-lock.json 完好无损?
    @otakustay 但我没想到 node 它不能多版本共存啊,.net 和 java 都能多版本共存
    @XiLingHost 确实,应该学学用 Docker 做项目了
    @Trim21 不清楚,node 有办法列出依赖树吗
    @throns 先存了,之后看看,我这目前没感觉 nvm 明显拖慢 terminal 的速度。话说 nvm 的原理不应该类似于手动更改环境变量吗,为什么会拖慢终端的速度?
    @CptDoraemon 好的,感谢,已经用在生产环境了
    otakustay
        22
    otakustay  
       2022-01-22 15:28:07 +08:00
    @LxnChan #21 Node 是最容易共存的,没有系统级依赖,配个 PATH 就能切不同版本
    muzuiget
        23
    muzuiget  
       2022-01-22 17:27:33 +08:00   3
    上面这么多人都没点开接一下看完整版本的日志吗,明明就是 Python 错误。

    你升级 node 之后,npm install 时需要重新编译 node-sass ,而你的 node-sass 版本太旧,里面的编译脚本还是 Python 2 语法,而你系统的 Python 的是 3.9 。print 语句已经在 Python 3 删除,Python 3 只有 print 函数。

    所以两个方法:

    1. 把系统 Python 降级会 Python 2 ,不过 Python 2 早已经废弃了。
    2. 修改 package.json, 把 node-sass 版本升级一下, 起码是迁移到 Python 3 的版本。
    looplj
        24
    looplj  
       2022-01-22 18:25:53 +08:00
    作为后端,负责一个 admin 项目,然后收到 dependabot 的提示升级 chore(deps): bump axios from 0.21.1 to 0.21.2 的 PR ,然后 merge 了,然后页面挂了。
    一脸懵逼,这兼容性也太差了。
    ysc3839
        25
    ysc3839  
       2022-01-22 21:39:41 +08:00 via Android   1
    @newbieRenew @CptDoraemon @throns
    个人同样推荐 fnm ,nvm 启动太慢,虽然在 Linux/macOS 下还可以接受,但是 WSL 下非常慢。
    nvm-windows 的操作逻辑和 nvm 有很大不同,而且印象中还缺功能,比如用 nvm install 16 ,它只会安装 16.0.0 版本。
    fnm 则没有上述问题,它跨平台,支持多种 shell (包括 cmd 和 PowerShell)。
    Buges
        26
    Buges  
       2022-01-22 21:51:33 +08:00 via Android
    前端随便升 node ,前端项目用 node 就跑个工具链,支持最新版 /最新 lts 版都是没问题的。当然维护古老工具链除外。
    jorneyr
        27
    jorneyr  
       2022-01-22 23:13:12 +08:00
    Hexo (需要升级到 5.0 以上版本):
    * 使用 hexo init blog 创建一个新项目
    * 把新项目中 package.json 的依赖覆盖当前项目的依赖
    justin2018
        28
    justin2018  
       2022-01-23 10:15:30 +08:00
    Schniz/fnm: Fast and simple Node.js version manager, built in Rust
    https://github.com/Schniz/fnm

    用这个试一试~
    star7th
        29
    star7th  
       2022-01-23 11:26:00 +08:00
    当然是用 docker 啦,docker 才算通用的解决方案。不然以后多 node 应用你还是可能会遇上同样问题
    lcj2class
        30
    lcj2class  
       2022-01-23 22:12:30 +08:00
    这就是若干年前为什么从 hexo 迁移的 hugo 的原因之一。。当时还总结了下,供题主参考:
    - https://liujiacai.net/blog/2020/12/05/hexo-to-hugo/
    mogutouer
        31
    mogutouer  
       2022-01-23 23:56:34 +08:00
    如果你只是用个 webpack ,完全没必要升级
    free9fw
        32
    free9fw  
       2022-01-24 08:42:27 +08:00
    Node14 后的 esm 还是值得升级的
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     1019 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 34ms UTC 19:03 PVG 03:03 LAX 11:03 JFK 14:03
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86