nodeJS 的 package npm install 怎么这么多依赖啊? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐关注
Meteor
JSLint - a Javascript code quality tool
jsFiddle
D3.js
WebStorm
推荐书目
Javascript 权威指南第 5 版
Closure: The Definitive Guide
cczh678
V2EX    Javascript

nodeJS 的 package npm install 怎么这么多依赖啊?

  •  
  •   cczh678 2023-07-22 15:39:24 +08:00 2609 次点击
    这是一个创建于 812 天前的主题,其中的信息可能已经有所发展或是发生改变。

    小白直问!!! 用 node js 开发软件,这个 package.json 需要自己写?

    今天 fork 一个项目,跑通想看看情况,一直在解决依赖问题,尤其这个 node sass 。。。

    求大神来点拨一二。。

    21 条回复    2023-07-24 15:38:19 +08:00
    vueli
        1
    vueli  
       2023-07-22 15:53:38 +08:00
    npm init -y 生成默认的 package.json 。 sass 我记得下载的源在国外,基本一直安装不了。 最后记得设置代理,可以设置本地的代理,或者直接改成淘宝源
    IvanLi127
        2
    IvanLi127  
       2023-07-22 16:01:37 +08:00 via Android
    node sass 最好用官方源+全局代理装。因为有些环境需要现场编译,依赖不好搞。。。
    package.json 可以手写也可以用 npm install ,npm uninstall 之类的命令增减依赖
    cczh678
        3
    cczh678  
    OP
       2023-07-22 16:05:41 +08:00
    @vueli 网络倒是没问题,源这些,就是一直在 node gpy node sass 这些地方,徘徊,装不过去,一开始是 python2 的问题,解决掉了,现在的问题,摸不着头脑了。应该还是版本与版本之间的依赖问题。这个项目三四年了,现在的 nodejs 版本比较新,对应的库应该也需要改一改。借着 chatgpt 在突击一下!!!
    cczh678
        4
    cczh678  
    OP
       2023-07-22 16:05:56 +08:00
    @IvanLi127 谢谢,哭了要。
    Daming
        5
    Daming  
       2023-07-22 16:31:53 +08:00
    亲,这边建议使用 pnpm
    agdhole
        6
    agdhole  
       2023-07-22 16:39:49 +08:00
    把 node sass 换成 Dart Sass ,具体原因可以直接搜
    renmu
        7
    renmu  
       2023-07-22 17:51:34 +08:00 via Android
    换 node14
    renmu
        8
    renmu  
       2023-07-22 17:54:25 +08:00 via Android
    我记得依赖 Python2 版本的 node-sass 你用高于 14 版本的 node 就跑不起来了,win 的话你还要安装编译工具
    crysislinux
        9
    crysislinux  
       2023-07-22 17:56:54 +08:00 via Android
    node sass 属于是安装比较麻烦的一类了。听楼上的用 dart 版的就好了
    joesonw
        10
    joesonw  
       2023-07-22 17:59:34 +08:00 via iPhone
    注意 node 版本,node-sass 一般都是 prebuilt ,但是后面出的就不会提前构建老版本 abi 的二进制了。你可以根据 node-sass 版本来决定 node 版本。去 node-gup-prebuilt 里找
    jack4536251
        11
    jack4536251  
       2023-07-22 18:01:37 +08:00 via Android
    把 node 版本改成 14 看看
    chf007
        12
    chf007  
       2023-07-22 18:11:23 +08:00
    chf007
        13
    chf007  
       2023-07-22 18:13:50 +08:00
    chf007
        14
    chf007  
       2023-07-22 18:14:39 +08:00
    v2ex 迷一般的编辑器
    cczh678
        15
    cczh678  
    OP
       2023-07-22 19:11:03 +08:00
    统一回复解决了,一直报一个错误,提出来,大家避坑。
    Module build failed: Error: Node Sass version 8.0.0 is incompatible with ^4.0.0.

    就这个报错,这个报错,细节应该是 sass-loader 模块和 node-sass 这两个模块之间的依赖关系。
    我的 nodejs 是 v18 的,所以我的 pack.json 写的 node-sass 版本高了一点,用的 8.0 。但是在网上没有找到 node-sass 和 sass-loader 的依赖匹配关系,所以,我一直胡乱写的一个版本,但是又引发 webpack 的依赖。
    总之,是很乱,最后在网上找了一个解法,弃用 node-sass ,直接用 sass ,问题顺利解决,对应的 package.json 文件也自动改成了 sass 的版本,编译运行顺利。

    参考源: https://stackoverflow.com/questions/74501317/whats-the-fix-for-error-node-sass-version-8-0-0-is-incompatible-with-4-0-0

    Don't use node-sass anymore
    node-sass is now deprecated. You can easily fix it by the following.

    npm uninstall node-sass
    npm install sass
    It works fully the same with better stability, You will not need to make any additional changes.

    And all Works well !
    pursuer
        16
    pursuer  
       2023-07-22 19:12:53 +08:00
    node-gyp 算是经常被吐槽的了 https://github.com/nodejs/node-gyp/issues/2287 。Ryan Dahl 自己也后悔选择了 gyp 做构建系统来着哈哈
    lisongeee
        17
    lisongeee  
       2023-07-22 19:25:06 +08:00
    默认情况下 node-sass 会根据当前 node 版本环境去 github 下载它预先编译好的模块,如果在 github 找不到或者无法下载,它就会自己使用 node-gyp 现场构建,而 nodejs 原生模块的构建要下载一堆东西,所以安装失败很正常

    如果网络通畅,一般情况下都是 node 版本太高导致 github 上没有找到提前预编译的模块 而 安装失败

    用 nvm/volta 切换版本 node 版本就好了,我推荐用 volta ,自带无缝切换 node 版本
    newxhk
        18
    newxhk  
       2023-07-22 23:58:12 +08:00 via iPhone
    node-sass 是我最目安的依之一
    wsseo
        19
    wsseo  
       2023-07-23 14:19:40 +08:00
    巨坑
    xubeiyan
        20
    xubeiyan  
       2023-07-23 19:20:19 +08:00 via Android
    换 sass 而不是继续在 node-sass 的坑里遨游
    https://www.npmjs.com/package/sass
    libook
        21
    libook  
       2023-07-24 15:38:19 +08:00
    你看看源码有没有 Github Action 的配置文件,看看里面用的是 node 哪个版本,然后你用一样的大版本试试。
    没有的话看看 issues 里面有没有人问编译问题,没有的话你自己开一个 issue 问一下。

    我遇到大多情况下是 node 版本不兼容,特别是 sass 这个,因为非 JS 代码要进行编译是依赖于 node API 的,对版本比较敏感。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     1158 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 26ms UTC 17:48 PVG 01:48 LAX 10:48 JFK 13:48
    Do have faith in what you're doing.
    ubao 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