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

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

  •  
  •   LxnChan · 165 天前 · 11069 次点击
    这是一个创建于 165 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    [email protected] 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 条附言  ·  165 天前
    感谢 5 楼,现在已经换 nvm 切换各个 node 版本了。
    32 条回复    2022-01-24 08:42:27 +08:00
    0312birdzhang
        1
    0312birdzhang  
       165 天前
    关键词:hexo nodejs14

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

    用这个试一试~
    star7th
        29
    star7th  
       164 天前
    当然是用 docker 啦,docker 才算通用的解决方案。不然以后多 node 应用你还是可能会遇上同样问题
    lcj2class
        30
    lcj2class  
       163 天前
    这就是若干年前为什么从 hexo 迁移的 hugo 的原因之一。。当时还总结了下,供题主参考:
    - https://liujiacai.net/blog/2020/12/05/hexo-to-hugo/
    mogutouer
        31
    mogutouer  
       163 天前
    如果你只是用个 webpack ,完全没必要升级
    free9fw
        32
    free9fw  
       163 天前
    Node14 后的 esm 还是值得升级的
    关于   ·   帮助文档   ·   API   ·   FAQ   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   3287 人在线   最高记录 5497   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 32ms · UTC 10:25 · PVG 18:25 · LAX 03:25 · JFK 06:25
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.