【谷粒商城】npm install node-sass报错问题的解决

主要是node-sass版本问题,他的版本看和node版本对应

0 安装

可以去这里找到v12的版本。(不要用12.0,可以用12.1)

https://npm.taobao.org/mirrors/node/

NPM是随同NodeJS一起安装的包管理工具。JavaScript-NPM类似于java-Maven。

命令行输入node -v 检查配置好了,配置npm的镜像仓库地址,再执

node -v
npm config set registry http://registry.npm.taobao.org/

1 版本信息

去https://github.com/sass/npnode-sass 或者 https://github.com/sass/node-sass/releases 都可以看到node和node-sass对应的版本信息

NodeJS Supported node-sass version Node Module
Node 15 5.0+ 88
Node 14 4.14+ 83
Node 13 4.13+, <5.0 79
Node 12 4.12+ 72
Node 11 4.10+, <5.0 67
Node 10 4.9+ 64
Node 8 4.5.3+, <5.0 57
Node <8 <5.0 <57

从https://github.com/sass/node-sass/releases?after=v4.12.0 也能看出4.9.2最多只支持到node10。

2 正常命令

  • 镜像加速:
    • npm config set registry http://registry.npm.taobao.org/

在项目项目下执行

# 指定node-sass版本,这句等价于修改package.json文件了。
# 注意不要指定4.9.2了
npm install  [email protected]

#安装其他依赖:
npm install

# 启动项目:
npm run dev

然后直接就可以执行起来了。如果没验证码什么的,是因为java项目没有启动

2.1 卸载残留问题

你可能按着评论区或视频的东西安装试过了,要注意执行我上面代码时要先清依赖残留,否则安装不上

npm rebuild node-sass
npm uninstall node-sass

上面步骤等价于直接删除node_modules,只不过node_modules是删了全部下载的依赖包

运行成功案例:

PS F:\renren-fast-vue> npm install
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: [email protected] (node_modules\fsevents):
npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for [email protected]: wanted {"os":"darwin","arch":"any"} (current: {"os":"win32","arch":"x64"})

up to date in 10.975s

2 packages are looking for funding
  run `npm fund` for details
  
 # warn先不用管
 # 运行
 npm run dev
 #  I  Your application is running here: http://localhost:8001
 

浏览器输入localhost:8001 就可以看到内容了,登录admin、 admin

我们还可以看到VS和IDEA联动了

3 视频评论区说法的错误

从上表看,如果你是node12,你得安装node-sass4.12版本以上的,我不知道评论区为什么4.9.2就可以了,应该是碰巧兼容了。

另外评论区写的镜像地址https://npm.taobao.org/mirrors/node-sass/ ,你在浏览器中输入后,你会发现他有4.9.4和5.0.0,却没有4.14+。

还有一种可能是,npm i这种语法在镜像中自动帮你检测与node版本最匹配的npm依赖包版本号(有这种功能),所以我个人认为你改了4.9.2也没有用。他根本不按照你写的来,自动匹配到了你指定的镜像里的版本号,他想要4.12+,但是你指定的镜像地址里没有,所以他就升级到使用5.0.0,这点是可以验证的,你此时看你项目里写的版本号,你明明写的4.9.2,他自动变成了^5.0.0。所以你写9.0还是9.2都无所谓,因为根本不按你的来(注意安装过的话先执行后文卸载操作)

综上,其实我不建议你写npm -i加链接的方式,原因如下:

安装了5.0版本后,你可能按此方法也能正常使用了,但安装时还是有个警告:

npm install
npm WARN sass-loader@6.0.6 requires a peer of node-sass@^4.0.0 but none is installed. You must install peer dependencies yourself.

这个应该说sass-loader@6.0.6需要低版本的sass,我除以为是升级sass-loader@6.0.6即可,但是升级后报错其他,可能是代码跟版本有关系,所以这是个很矛盾的配置

所以我们被用i的方式让他升级到版本5了,我们直接@4.14,这个版本兼容node12和node14

3.1 python问题?

视频评论区有人说得先安装python,因为我本身已经安装了anaconda,所以不确定影响与否。如果失败可以尝试安装python3.0以上版本,并配置全局变量。(根据人人开发文档介绍: node使用8.x版本,无需做任何改动,如果报错,执行npm rebuild node-sass之后,然后重新install即可,无需安装python)

3.2 npm i方式安装?

评论区提供了这么一种解决方式,这个我上面说过了,镜像里并没有4.14版本,你使用了版本5的又造成sass-loader不匹配,升级sass-loader代码又报错。所以这里不适合用这个。

  • 单独安装node-sass: npm i node-sass --sass_binary_site=https://npm.taobao.org/mirrors/node-sass/

  • node和node-sass有版本对应关系。node12对应4.14的node-sass

  • i是install的缩写

3.3 chromedriver问题?

按理说没有这个问题

  • npm install chromedriver --chromedriver_cdnurl=http://cdn.npm.taobao.org/dist/chromedriver

知识点:

1、npm i是什么
npm -h

C:\Users\HAN>npm i -h

npm install (with no args, in package dir)
npm install [<@scope>/]
npm install [<@scope>/]@
npm install [<@scope>/]@
npm install [<@scope>/]@
npm install @npm:
npm install 
npm install 
npm install 
npm install 
npm install /

aliases: i, isntall, add
common options: [--save-prod|--save-dev|--save-optional] [--save-exact] [--no-save]

你会发现npm是npm install的简写,但也有区别:

\1. 用npm i安装的模块无法用npm uninstall删除,用npm uninstall i才卸载掉 (这个说法我比较怀疑)
\2. npm i会帮助检测与当前node版本最匹配的npm包版本号,并匹配出来相互依赖的npm包应该提升的版本号
\3. 部分npm包在当前node版本下无法使用,必须使用建议版本
\4. 安装报错时intall肯定会出现npm-debug.log 文件,npm i不一定

我试过用npm i代替npm install,结果是4.9.0的下载下来了,但是报错环境不匹配

指定安装版本

修改package.json中 node-sass 版本,下载高版本node-sass,支持node10

1.1 手动下载node文件,安装 npm i node-sass --sass_binary_path=/{path}/win32-x64-64_binding.node
1.2 指定版本安装:npm install [email protected] --save

package.json文件的作用

https://blog.csdn.net/csm0912/article/details/90264026

阿里云镜像网站

npm:https://developer.aliyun.com/mirror/NPM

https://developer.aliyun.com/mirror/

关系

npm install sass-loader node-sass webpack --save-dev

必须安装node-sass才能安装sass-loader

你可能感兴趣的:(谷粒项目笔记)