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

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

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

    自己的 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
    0312birdzhang
        1
    0312birdzhang  
       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
    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…
    XiLingHost
        11
    XiLingHost  
       2022-01-22 13:03:14 +08:00
    不如试试 docker ,把这些都丢到容器里跑,环境就稳定了
    liuhai233
        12
    liuhai233  
       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 的版本。
    ZSeptember
        24
    ZSeptember  
       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   ·   实用小工具   ·   2768 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 12:19 · PVG 20:19 · LAX 04:19 · JFK 07:19
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.