npm尝试加载错误版本的node-sass

时间:2018-10-30 06:38:48

标签: npm npm-install node-sass

我将一个项目升级到node-sass 4.9.4,因为不再支持我们以前的版本3.13.1,如果尝试从github加载,它将导致404。问题是,每当我尝试执行此操作时,npm都会不断尝试加载node-sass@3.13.1

我尝试做npm install node-sass@4.9.4npm install node-sass@4.9.3npm install node-sass@latest,但是每次尝试加载3.13.1都会导致以下错误:

$ npm install node-sass@4.9.3

> node-sass@3.13.1 install D:\Projects\Repos\bluemill\mle-website\node_modules\gulp-sass\node_modules\node-sass
> node scripts/install.js

Downloading binary from https://github.com/sass/node-sass/releases/download/v3.13.1/win32-x64-57_binding.node
Cannot download "https://github.com/sass/node-sass/releases/download/v3.13.1/win32-x64-57_binding.node":

HTTP error 404 Not Found

Hint: If github.com is not accessible in your location
      try setting a proxy via HTTP_PROXY, e.g.

      export HTTP_PROXY=http://example.com:1234

or configure npm proxy via

      npm config set proxy http://example.com:8080

> node-sass@4.9.3 install D:\Projects\Repos\bluemill\mle-website\node_modules\node-sass
> node scripts/install.js

Downloading binary from https://github.com/sass/node-sass/releases/download/v4.9.3/win32-x64-57_binding.node
Download complete
Binary saved to D:\Projects\Repos\bluemill\mle-website\node_modules\node-sass\vendor\win32-x64-57\binding.node
Caching binary to C:\Users\Tyler\AppData\Roaming\npm-cache\node-sass\4.9.3\win32-x64-57_binding.node

> node-sass@3.13.1 postinstall D:\Projects\Repos\bluemill\mle-website\node_modules\gulp-sass\node_modules\node-sass
> node scripts/build.js

我尝试过的其他事情:

  • 重新启动计算机
  • 重新启动docker
  • 重新启动git bash(我在Windows上)
  • 运行npm cache clean --force
  • 转到node-sass 4.9.4 npm-cache文件夹并手动下载和安装绑定
  • 在package.json中为正确的文件夹设置"node-sass": "^4.9.0"
  • 在package-lock.json中设置"node-sass": { "version": "4.9.4"...
  • 检查了package.json和package-lock.json是否存在重复的节点设置要求,这些要求可能设置为其他版本(没有其他版本)
  • 删除node_modules文件夹并再次运行npm install
  • 运行npm rebuild node-sass

无论我做什么,它总是尝试先加载3.13.1,并导致404错误。我对接下来可以尝试的一切完全迷失了。我已经仔细检查了我是否在与正确的package.json相同的目录中至少运行了5次命令。

第一次遇到错误时,我修复了package.json并且它起作用了,然后在进行docker-compose时出现了错误,所以我重新运行npm install来确认它具有所有模块,此后它无论我做什么,都只会加载3.13.1。

5 个答案:

答案 0 :(得分:1)

我尝试先使用rm -rf ./node_modules,然后再使用npm install。由于某种原因,它起作用了。我以前曾手动删除过该文件夹,但是单击了删除,所以我不知道它是否是我尝试过的其他东西的混合,或者仅仅是因为我是通过代码完成的。无论哪种方式,它都随后为node-sass加载4.9.4

答案 1 :(得分:1)

方法1

sudo npm i -g node-gyp


sudo npm install node-sass --save-dev --unsafe-perm=true

sudo rm -rf node_modules && npm rebuild node-sass && npm i

方法2

sudo npm install --unsafe-perm -g node-sass

推荐:方法3

rm -rf ./node_modules
sudo rm package-lock.json 
sudo npm install --unsafe-perm

如果您尝试仅安装node-sass或laravel-mix

sudo npm install --unsafe-perm node-sass
sudo npm install --unsafe-perm laravel-mix

如果要全局安装,请使用-g标志:

sudo npm install --unsafe-perm -g node-sass
sudo npm install --unsafe-perm -g laravel-mix

答案 2 :(得分:0)

我有类似的问题。我同时安装了sass和嵌套节点项目。我通过删除项目目录,父项目以及/ usr / lib和/ usr / bin中的全局安装中的node_modules来解决此问题。然后npm从上到下安装所有内容。 sass非常擅长从系统上许多不同的位置采购二进制文件。请务必使用find /usr -name *sass*将其完全清除。

答案 3 :(得分:0)

刚刚;

  • 删除package-lock.json
  • 清除npm缓存(确定)
  • 删除节点模块
  • 执行npm install

花了我一天的时间,我从stackoverflow,github等中遵循了20多个过程。

答案 4 :(得分:0)

我在Laravel中遇到了同样的问题,这个过程对我有用。

我打开package.json文件并更新以下内容。

"laravel-mix": "^5.0.1",
    "sass": "^1.20.1",
    "sass-loader": "^8.0.0"

如果您在2020年遇到同样的问题,我认为这也将对您有用。不要忽略laravel-mix,因为node-sass是它的依赖项,因此您还必须将其更新为最新版本。 如果您将Laravel与Vue JS一起使用,则可以将所有依赖项更新到最新版本。

"axios": "^0.19",
    "bootstrap": "^4.0.0",
    "cross-env": "^7.0",
    "jquery": "^3.2",
    "laravel-mix": "^5.0.1",
    "lodash": "^4.17.13",
    "popper.js": "^1.12",
    "resolve-url-loader": "^2.3.1",
    "sass": "^1.20.1",
    "sass-loader": "^8.0.0",
    "vue": "^2.5.17",
    "vue-template-compiler": "^2.6.10"

现在运行npm install

快乐的编码...