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

2023-07-22 15:39:24 +08:00
 cczh678

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

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

求大神来点拨一二。。

2151 次点击
所在节点    JavaScript
21 条回复
vueli
2023-07-22 15:53:38 +08:00
npm init -y 生成默认的 package.json 。 sass 我记得下载的源在国外,基本一直安装不了。 最后记得设置代理,可以设置本地的代理,或者直接改成淘宝源
IvanLi127
2023-07-22 16:01:37 +08:00
node sass 最好用官方源+全局代理装。因为有些环境需要现场编译,依赖不好搞。。。
package.json 可以手写也可以用 npm install ,npm uninstall 之类的命令增减依赖
cczh678
2023-07-22 16:05:41 +08:00
@vueli 网络倒是没问题,源这些,就是一直在 node gpy node sass 这些地方,徘徊,装不过去,一开始是 python2 的问题,解决掉了,现在的问题,摸不着头脑了。应该还是版本与版本之间的依赖问题。这个项目三四年了,现在的 nodejs 版本比较新,对应的库应该也需要改一改。借着 chatgpt 在突击一下!!!
cczh678
2023-07-22 16:05:56 +08:00
@IvanLi127 谢谢,哭了要。
Daming
2023-07-22 16:31:53 +08:00
亲,这边建议使用 pnpm
agdhole
2023-07-22 16:39:49 +08:00
把 node sass 换成 Dart Sass ,具体原因可以直接搜
renmu
2023-07-22 17:51:34 +08:00
换 node14
renmu
2023-07-22 17:54:25 +08:00
我记得依赖 Python2 版本的 node-sass 你用高于 14 版本的 node 就跑不起来了,win 的话你还要安装编译工具
crysislinux
2023-07-22 17:56:54 +08:00
node sass 属于是安装比较麻烦的一类了。听楼上的用 dart 版的就好了
joesonw
2023-07-22 17:59:34 +08:00
注意 node 版本,node-sass 一般都是 prebuilt ,但是后面出的就不会提前构建老版本 abi 的二进制了。你可以根据 node-sass 版本来决定 node 版本。去 node-gup-prebuilt 里找
jack4536251
2023-07-22 18:01:37 +08:00
把 node 版本改成 14 看看
chf007
2023-07-22 18:11:23 +08:00
chf007
2023-07-22 18:13:50 +08:00
chf007
2023-07-22 18:14:39 +08:00
v2ex 迷一般的编辑器
cczh678
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
2023-07-22 19:12:53 +08:00
node-gyp 算是经常被吐槽的了 https://github.com/nodejs/node-gyp/issues/2287 。Ryan Dahl 自己也后悔选择了 gyp 做构建系统来着哈哈
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
2023-07-22 23:58:12 +08:00
node-sass 是我最討厭項目裡安裝的依賴之一
wsseo
2023-07-23 14:19:40 +08:00
巨坑
xubeiyan
2023-07-23 19:20:19 +08:00
换 sass 而不是继续在 node-sass 的坑里遨游
https://www.npmjs.com/package/sass

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/958804

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX