LxnChan
V2EX  ›  Node.js

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

  •  
  •   LxnChan · Jan 22, 2022 · 14364 views
    This topic created in 1755 days ago, the information mentioned may be changed or developed.

    我自己的 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 。

    Supplement 1  ·  Jan 22, 2022
    感谢 5 楼,现在已经换 nvm 切换各个 node 版本了。
    32 replies  •  2022-01-24 08:42:27 +08:00
    1daydayde
    1daydayde
    Jan 22, 2022
    1
    关键词:hexo nodejs14

    解决方法:回滚 nodejs 到 12
    newbieRenew
    newbieRenew
    Jan 22, 2022 via iPhone❤️1
    2
    都不用 nvm ?
    kidonng
    kidonng
    Jan 22, 2022 via Android
    3
    Volta
    ayase252
    ayase252
    Jan 22, 2022 via iPhone
    4
    升级下 hexo 呗
    CptDoraemon
    CptDoraemon
    Jan 22, 2022❤️3
    5
    CptDoraemon
    CptDoraemon
    Jan 22, 2022❤️3
    6
    Biwood
    Biwood
    Jan 22, 2022❤️1
    7
    node 真别随便升级,硬要升级的话,确保 package-lock.json 完好无损
    throns
    throns
    Jan 22, 2022 via iPhone❤️4
    8
    @CptDoraemon 推荐一个更优秀的替代品 https://github.com/Schniz/fnm ,nvm 严重拖慢 terminal 启动速度
    otakustay
    otakustay
    Jan 22, 2022
    9
    Node 毕竟是个运行时,这和 Java 升个级、.NET 升个级一个道理,一定是会出大大小小的问题的,不能把它等同于工具库升个级这么简单
    Trim21
    Trim21
    Jan 22, 2022 via Android
    10
    这是哪个依赖还在坚守 node-sass…
    KagurazakaNyaa
    KagurazakaNyaa
    Jan 22, 2022
    11
    不如试试 docker ,把这些都丢到容器里跑,环境就稳定了
    awsl2333
    awsl2333
    Jan 22, 2022 via iPhone
    12
    可以装多个 node 吧,n 切换下
    chunqiuyiyu
    chunqiuyiyu
    Jan 22, 2022
    13
    我也是因为这个原因,所以把 Hexo 换了。
    wonderfulcxm
    wonderfulcxm
    Jan 22, 2022 via iPhone
    14
    @throns nvm 确实会对终端启动速度有影响,我用 zsh ,可以用 zsh-nvm 这个 plugin 实现 nvm 的 Lazy Loading ,速度提升明显。
    lixuanyy
    lixuanyy
    Jan 22, 2022 via iPhone
    15
    歪个楼,我一直觉得 hugo 挺好用的🙈
    zzzain46
    zzzain46
    Jan 22, 2022❤️1
    16
    换 hugo
    uni
    uni
    Jan 22, 2022
    17
    node-sass 的问题,我一般用 sass 代替 node-sass 就行了
    但是 hexo 没用过,不知道怎么搞
    kidult
    kidult
    Jan 22, 2022
    18
    前端随便升级 node 可是一个禁忌
    xratzh
    xratzh
    Jan 22, 2022 via Android
    19
    最近重装 ghost 发展 node 真滴难,动不动就升级
    reallynyn
    reallynyn
    Jan 22, 2022
    20
    没用过 node ,谁能解释下为啥会出现 Invalid 'main' field ?
    LxnChan
    LxnChan
    OP
    Jan 22, 2022
    21
    @kidult 没怎么接到过 node 的项目不太清楚能不能升级
    @Biwood 怎么说确保 package-lock.json 完好无损?
    @otakustay 但我没想到 node 它不能多版本共存啊,.net 和 java 都能多版本共存
    @XiLingHost 确实,应该学学用 Docker 做项目了
    @Trim21 不清楚,node 有办法列出依赖树吗
    @throns 先存了,之后看看,我这目前没感觉 nvm 明显拖慢 terminal 的速度。话说 nvm 的原理不应该类似于手动更改环境变量吗,为什么会拖慢终端的速度?
    @CptDoraemon 好的,感谢,已经用在生产环境了
    otakustay
    otakustay
    Jan 22, 2022
    22
    @LxnChan #21 Node 是最容易共存的,没有系统级依赖,配个 PATH 就能切不同版本
    muzuiget
    muzuiget
    Jan 22, 2022❤️3
    23
    上面这么多人都没点开接一下看完整版本的日志吗,明明就是 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
    looplj
    Jan 22, 2022
    24
    作为后端,负责一个 admin 项目,然后收到 dependabot 的提示升级 chore(deps): bump axios from 0.21.1 to 0.21.2 的 PR ,然后 merge 了,然后页面挂了。
    一脸懵逼,这兼容性也太差了。
    ysc3839
    ysc3839
    Jan 22, 2022 via Android❤️1
    25
    @newbieRenew @CptDoraemon @throns
    个人同样推荐 fnm ,nvm 启动太慢,虽然在 Linux/macOS 下还可以接受,但是 WSL 下非常慢。
    nvm-windows 的操作逻辑和 nvm 有很大不同,而且印象中还缺功能,比如用 nvm install 16 ,它只会安装 16.0.0 版本。
    fnm 则没有上述问题,它跨平台,支持多种 shell (包括 cmd 和 PowerShell)。
    Buges
    Buges
    Jan 22, 2022 via Android
    26
    前端随便升 node ,前端项目用 node 就跑个工具链,支持最新版 /最新 lts 版都是没问题的。当然维护古老工具链除外。
    jorneyr
    jorneyr
    Jan 22, 2022
    27
    Hexo (需要升级到 5.0 以上版本):
    * 使用 hexo init blog 创建一个新项目
    * 把新项目中 package.json 的依赖覆盖当前项目的依赖
    justin2018
    justin2018
    Jan 23, 2022
    28
    Schniz/fnm: 🚀 Fast and simple Node.js version manager, built in Rust
    https://github.com/Schniz/fnm

    用这个试一试~
    star7th
    star7th
    Jan 23, 2022
    29
    当然是用 docker 啦,docker 才算通用的解决方案。不然以后多 node 应用你还是可能会遇上同样问题
    lcj2class
    lcj2class
    Jan 23, 2022
    30
    这就是若干年前为什么从 hexo 迁移的 hugo 的原因之一。。当时还总结了下,供题主参考:
    - https://liujiacai.net/blog/2020/12/05/hexo-to-hugo/
    mogutouer
    mogutouer
    Jan 23, 2022
    31
    如果你只是用个 webpack ,完全没必要升级
    free9fw
    free9fw
    Jan 24, 2022
    32
    Node14 后的 esm 还是值得升级的
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   3369 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 84ms · UTC 10:10 · PVG 18:10 · LAX 02:10 · JFK 05:10
    ♥ Do have faith in what you're doing.