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

7
我正在升级一个项目到node-sass 4.9.4版本,因为我们之前使用的3.13.1版本已不再受支持,如果尝试从github加载将会得到404错误。问题是每次我尝试这样做时,npm都会尝试加载node-sass@3.13.1版本。我已经尝试了npm install node-sass@4.9.4,npm install node-sass@4.9.3和npm 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文件夹,手动下载并安装binding
  • 在package.json中为正确的文件夹设置"node-sass": "^4.9.0"
  • 在package-lock.json中设置"node-sass": { "version": "4.9.4"...
  • 检查package.json和package-lock.json是否有重复的node-sass要求,可能设置为不同的版本(没有其他版本)
  • 删除node_modules文件夹并再次运行npm install
  • 运行npm rebuild node-sass

无论我做什么,它总是首先尝试加载3.13.1,结果导致404错误。我完全不知道下一步该怎么办。我已经至少五次双重检查确认我在相同的目录下运行命令,与正确的package.json。

第一次出现错误时,我修复了package.json,然后在执行docker-compose up时出现了错误,所以我重新运行npm install来确认它是否有所有模块,自那以后,无论我做什么它都只加载3.13.1。

5个回答

3

方法一:

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

Recommended: Method 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

我很想了解你为什么建议使用这些命令,即出了什么问题,以及这如何解决问题? - Philipp

1
我尝试使用rm -rf ./node_modules然后npm install。出于某种原因,这行命令起作用了。我之前手动删除过文件夹,但是不知道是因为我尝试了其他方法并结合这个方法才成功,还是仅仅因为我通过代码执行了它。无论如何,这样做之后就加载了4.9.4版的node-sass。

0

仅需:

  • 删除 package-lock.json
  • 清除 npm 缓存(以确保)
  • 删除 node-modules
  • 执行 npm install

我花了一天时间,遵循了来自 stackoverflow、github 等网站的 20 多个步骤。


0

我曾经遇到过类似的问题。我同时安装了全局的sass和嵌套的node项目。我通过删除项目目录、父项目和/usr/lib和/usr/bin中的全局安装的node_modules来解决了这个问题。然后从上到下使用npm install安装所有内容。sass非常擅长从系统上许多不同的位置获取二进制文件。请确保使用find /usr -name *sass*将它们全部清除。


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

愉快的编码...


如果你遇到了Vue包版本不匹配的错误,只需将Vue和Vue模板编译器设置为相同的版本,例如:"vue": "^2.6.10","vue-template-compiler": "^2.6.10"。 - George Monk

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接