小白直问!!! 用 node js 开发软件,这个 package.json 需要自己写?
今天 fork 一个项目,跑通想看看情况,一直在解决依赖问题,尤其这个 node sass 。。。
求大神来点拨一二。。
1
vueli 2023-07-22 15:53:38 +08:00
npm init -y 生成默认的 package.json 。 sass 我记得下载的源在国外,基本一直安装不了。 最后记得设置代理,可以设置本地的代理,或者直接改成淘宝源
|
2
IvanLi127 2023-07-22 16:01:37 +08:00 via Android
node sass 最好用官方源+全局代理装。因为有些环境需要现场编译,依赖不好搞。。。
package.json 可以手写也可以用 npm install ,npm uninstall 之类的命令增减依赖 |
3
cczh678 OP @vueli 网络倒是没问题,源这些,就是一直在 node gpy node sass 这些地方,徘徊,装不过去,一开始是 python2 的问题,解决掉了,现在的问题,摸不着头脑了。应该还是版本与版本之间的依赖问题。这个项目三四年了,现在的 nodejs 版本比较新,对应的库应该也需要改一改。借着 chatgpt 在突击一下!!!
|
5
Daming 2023-07-22 16:31:53 +08:00
亲,这边建议使用 pnpm
|
6
agdhole 2023-07-22 16:39:49 +08:00
把 node sass 换成 Dart Sass ,具体原因可以直接搜
|
7
renmu 2023-07-22 17:51:34 +08:00 via Android
换 node14
|
8
renmu 2023-07-22 17:54:25 +08:00 via Android
我记得依赖 Python2 版本的 node-sass 你用高于 14 版本的 node 就跑不起来了,win 的话你还要安装编译工具
|
9
crysislinux 2023-07-22 17:56:54 +08:00 via Android
node sass 属于是安装比较麻烦的一类了。听楼上的用 dart 版的就好了
|
10
joesonw 2023-07-22 17:59:34 +08:00 via iPhone
注意 node 版本,node-sass 一般都是 prebuilt ,但是后面出的就不会提前构建老版本 abi 的二进制了。你可以根据 node-sass 版本来决定 node 版本。去 node-gup-prebuilt 里找
|
11
jack4536251 2023-07-22 18:01:37 +08:00 via Android
把 node 版本改成 14 看看
|
12
chf007 2023-07-22 18:11:23 +08:00
[![pCqM5Jf.md.png]( https://s1.ax1x.com/2023/07/22/pCqM5Jf.md.png)]( https://imgse.com/i/pCqM5Jf)
|
13
chf007 2023-07-22 18:13:50 +08:00
|
14
chf007 2023-07-22 18:14:39 +08:00
v2ex 迷一般的编辑器
|
15
cczh678 OP 统一回复解决了,一直报一个错误,提出来,大家避坑。
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 ! |
16
pursuer 2023-07-22 19:12:53 +08:00
node-gyp 算是经常被吐槽的了 https://github.com/nodejs/node-gyp/issues/2287 。Ryan Dahl 自己也后悔选择了 gyp 做构建系统来着哈哈
|
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 版本 |
18
newxhk 2023-07-22 23:58:12 +08:00 via iPhone
node-sass 是我最討厭項目裡安裝的依賴之一
|
19
wsseo 2023-07-23 14:19:40 +08:00
巨坑
|
20
xubeiyan 2023-07-23 19:20:19 +08:00 via Android
换 sass 而不是继续在 node-sass 的坑里遨游
https://www.npmjs.com/package/sass |
21
libook 2023-07-24 15:38:19 +08:00
你看看源码有没有 Github Action 的配置文件,看看里面用的是 node 哪个版本,然后你用一样的大版本试试。
没有的话看看 issues 里面有没有人问编译问题,没有的话你自己开一个 issue 问一下。 我遇到大多情况下是 node 版本不兼容,特别是 sass 这个,因为非 JS 代码要进行编译是依赖于 node API 的,对版本比较敏感。 |