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 · 2124 次点击
    这是一个创建于 492 天前的主题,其中的信息可能已经有所发展或是发生改变。

    小白直问!!! 用 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   ·   实用小工具   ·   3539 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 04:55 · PVG 12:55 · LAX 20:55 · JFK 23:55
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.