Node Sass找不到您当前环境的绑定


499

我在构建应用程序时遇到问题,因为node-sass不断因错误而失败。

缺少绑定/Users/warren/Sites/random-docs/my-cms/node_modules/node-sass/vendor/darwin-x64-11/binding.node中的错误
Node Sass找不到您当前环境的绑定:OS X节点为0.10.x的64位

我尝试跑步

npm rebuild node-sass

这说

二进制很好;退出。

运行时node -v我得到v6.2.2

这与sass错误显示“节点0.10.x”不同。我不知道为什么它得到了错误的版本。我还尝试了删除node_modules文件夹并运行npm update或npm install,但这两种方法都无法解决问题。有任何想法吗?


8
您是否正在使用诸如的节点版本管理器nvm?如果有时您会弄乱一些npm模块路径,它们会尝试使用与当前版本不同的版本。如果不是,您可以总是尝试删除node_modules文件夹并再次安装依赖项
Vasil Dininski

2
嘿,即时通讯未使用nvm,我尝试了删除/重新安装步骤。没运气。
2016年

您的开发环境是什么?您使用VS.NET 2105吗?
Mike Anderson

@VasilDininski我正在使用nvm,该怎么办?
Subkhan Sarif

1
打开Visual Studio2017。转到工具->选项...转到项目和解决方案-> Web软件包管理,将$(PATH)移动到该列表的顶部,然后关闭该窗口。就我而言,此解决方案之所以有效,是因为我的节点版本为11.x
已于

Answers:


721

我有同样的问题

gulpfile中存在错误:
错误:缺少绑定E:\ allapp \ badshaindiancuisine \ node_module \ node-sass \ vendor \ win32-x64-46 \ binding.node
节点Sass找不到当前环境的绑定:Windows 64位与Node.js 4.x

找到以下环境的绑定:
    -带有Node.js 4.x的OS X 64位

如何解决我的问题

通过进入项目文件夹,然后执行:

npm rebuild node-sass

6
最初工作过,但仍然有问题。因此,我开始/usr/local/lib/在finder中使用CMD + SHIFT + G并重命名了node-sass文件夹。然后跑了npm install node-sass -g。固定的。我使用的是Mac OS
IsmailS,

将nodejs更新到8.xx后,我遇到了这个问题,并解决了该问题。非常感谢!感激!
ChiragMS

2
不起作用 节点:v10.7.0 节点萨斯:v3.13.1。说我当前的环境是节点为0.10.x的32位窗口,这根本不是真的。
Bardicer

这在带有节点10.14 LTS和npm 6.4.1的Windows 7中起作用。
桑顿

9
第一步是删除node_modules并运行npm install而不是重建节点资源。
Nikhil Nanjappa,

294

注意我正在使用VS 2015、64位Windows 7。

也适用于VS 2017和VS 2019(来自此帖子的回复)

Task Runner Explorer无法加载任务

对于VS 2015

  • 转到:工具>选项>项目和解决方案>外部Web工具

对于VS 2017(.3)

  • 工具>选项>项目和解决方案> Web软件包管理>外部Web工具(每个@nothrow)

在VS 2017和2019中,还需要将$(PATH)放在$(VSINSTALLERDIR)\ Web \ External之上


  • 重新排序,以使$(PATH)在$(DevEnvDir)\ Extensions \ Microsoft \ Web Tools \ External之上

在此处输入图片说明


删除node_modules并运行npm install,然后npm rebuild node-sass 什么也没做


5
如果您使用的是VS2015,则一定要进行此答案中所述的更改。解决此问题可能是您所需要做的。
Bonneville

12
这也适用于全新安装的VS2017。
沙林2015年

8
在VS2017.3,该路径设置为Tools > Options > Projects and Solutions > Web Package Management > External Web Tools
无抛出

6
该死!我永远不会弄清楚...所有这些都是用愚蠢的javascript编译带有愚蠢节点的愚蠢的sass
L.Trabacchin 18'Aug

7
可以确认,这在VS 2019中仍然是一回事
。– JamesT

140

我在Windows环境中遇到相同的问题,收到以下错误:

错误:缺少绑定C:\ Development {ProjectName} \ node_modules \ node-sass \ vendor \ win32-ia32-47 \ binding.node
Node Sass找不到您当前环境的绑定:Windows 32位,带有Node.js 5 .x
找到了以下环境的绑定:
   -具有Node.js 6.x的Windows 64位

在没有npm在这里的其他答案(列出的命令npm installnpm rebuild node-sass等)的工作。

相反,我必须下载缺少的绑定并将其放在适当的目标文件夹中。

绑定可以在git上找到。将文件与/node_modules/node-sass/vendor/错误消息中之后标识的文件夹名称进行匹配(对于您的情况为'darwin-x64-11',因此需要该darwin-x64-11_binding.node文件)。

在项目(/node_modules/node-sass/vendor/darwin-x64-11)中创建丢失的文件夹,将.node文件复制到新目录,然后将其重命名为binding.node

Node-sass发行URL:https : //github.com/sass/node-sass/releases


3
也为我工作,谢谢!尝试清理node_modules,删除缓存,rifraf,重建node-sass,从VS2015而不是从命令行使用npm进行重建,最后修复了该问题。
阿图尔·卡瓦略

1
@JanCiołek我只发生过一次,所以我不必重做。我不确定它是否特定于版本,或者特定安装是否存在问题,但是我没有找到更好的解决方案(这里的其他答案对我来说不起作用)。不管是否麻烦,它似乎都是解决此问题的必要方法。
Beofett

1
@Beofett这个错误占用了我很多时间,我做了这个线程中提到的所有事情,但是我忘了运行编制。谢谢!
JanCiołek'18

4
这是该工人对我唯一的答案,但在github.com/sass/node-sass/releases中找到了我的绑定,而不是链接的URL。干杯
clapas

2
谢谢@Beofett。您的回答使我免于在Windows和Mac OSX中运行Ionic项目。
Marcus Crisostomo

138

为我工作:

只需删除node-sass文件夹并运行即可npm install


4
这也对我有用。显然,节点版本冲突。谢谢!
Liz Lemon '18

1
确实必须将其删除以下目录:C:\ Users \您的用户名\ AppData \ Roaming \ npm-cache
Matt

7
这工作了!npm rebuild node-sass没有为我工作。(Mac上WebStorm)
Jackpile

3
这是唯一对我有用的解决方案!npm rebuild node-sass --force也不起作用。
bigsee

这应该被标记为答案。直到现在,我仍然不知道为什么我的解决方案为什么一直以更高版本的节点为目标,并不断向我提供有关nodesass的错误消息。我在Azure管道中迈出了一步,将节点版本强制为我想要的版本。现在,我可以删除该步骤了!
詹姆斯·布莱克本

117

只需执行: npm rebuild node-sass --force


如果由于某种原因上述方法无法解决您的问题,请尝试以下操作:

  1. 删除node-sass文件夹node_modules
  2. npm install

就我而言,它也找不到Python

遵循以下步骤解决了该问题(Windows):

npm rebuild node-sass --force
-- cannot find python.exe, if you have Python installed, add it to your path:
set PYTHON=C:\Python27\Python.exe
-- else: download python "Windows x86-64-MSI" installer from https://www.python.org/downloads/release/python-2714/
-- install python
-- at installation start check: add env variable to path
-- after successfull installation:
npm rebuild node-sass --force
-- finished successfully

1
上面的内容对我有用,尽管它在两个不同文件夹中的两个不同应用程序中发生了两次。python安装是一次性的(即,当我第二次在其他应用上再次遇到错误时,则不需要),并且我不需要最终的npm run build命令(至少没有明确的要求),但是我确实需要运行重建-两次为我的两个应用强制。
格雷格·特雷维利克

31

npm rebuild node-sass --force

或者,如果您在容器内使用node-sass:

docker exec <container-id> npm rebuild node-sass --force

当node-sass对当前操作系统没有正确的绑定时,将发生此错误。

如果使用Docker,则通常在node_modules直接添加到Dockerfile中的容器文件系统(或使用Docker卷安装它们)时发生此错误。

容器架构可能与您当前的操作系统不同。例如,我在macOS上安装了node-sass,但是我的容器运行Ubuntu。

如果您强制Node-sass从容器内部重建,则node-sass将下载容器操作系统的正确绑定。

请参阅我的生殖器案例以了解更多信息。


1
在不同的环境中面临相同的问题:-在MacOS下进行单元测试的开发人员-使用docker-compose(用于完整的系统交互)的开发人员-在基于高山的OS下进行生产;npm install当具有依赖于体系结构的模块时,是否在docker中挂载(或不挂载)和(或不挂载)是有问题的:根据您的位置获取darwinlinux二进制文件npm i对于NodeJS模块,如node-sass,或@google-cloud/pubsub
Laurent

感谢您提及docker解决方案,这正是为我解决的问题!
约书亚(Joshua Soileau)

我将/node_modules它绑定到的容器中/app/node_modules。即使我NODE_PATH曾经/node_modules(确实存在过)并且应该在其他地方..,它还是随机开始引起问题。我已经在两个地方都安装了,以便我的开发部门更漂亮的部门可以与我的vscode一起使用。哎呀 奇怪的东西。感谢您的码头工人提及<3
Nick Brady

25

我有一个类似的问题,原因是我的计算机上安装了两个版本的Node:一个是“全局”版本,另一个是在项目级别。仅当Gulp构建在Node.js 4.x版本下运行时,Sass才能正确构建,因此请确保升级所使用的Node版本。

PS:如果您完全删除了项目中的node_modules文件夹并从头开始重建,npm将为您当前的系统和节点版本下载正确的依赖项。


感谢上帝。实际上,我实际上是先尝试在Macbook上降级节点,然后半个小时后便放弃了
Cpt。Senkfuss

17

在某些情况下,您需要卸载并安装node-sass库。尝试:

npm uninstall --save node-sass

npm install --save node-sass

看看这对我的工作, 这里的链接



12

对于我的特殊情况,以上答案均无效。所以它的工作原理是:

rm -rf node_modules 
rm -rf /tmp/* 
rm -rf /root/.npm/node-sass 
npm uninstall --save node-sass 
npm cache clean --force 

npm cache verify 检查缓存中是否没有任何内容

npm install

尽管我还没有尝试重现该序列,但这是上述方法的结合。另外,您也可以尝试:

npm install --save node-sass 要么 npm install node-sass -g

npm rebuild node-sass
npm install bindings

11

* Docker相关的答案在这里*

回答是否遇到此问题或类似问题,并且正在使用Docker。

原因:将当前文件结构复制到Docker容器内部时,您可能正在将节点模块从一个OS系统复制到另一个OS系统(例如,从Mac到Linux容器)。

解:

添加.dockerignore,然后在内部添加:

node_modules

这将导致npm install为docker环境而非本地计算机环境安装绑定。


9

我有同样的问题

    throw new Error(errors.missingBinary());
    ^

Error: Missing binding /path/to/project/node_modules/node-sass/vendor/linux-x64-47/binding.node
Node Sass could not find a binding for your current environment: Linux 64-bit with Node.js 5.x

Found bindings for the following environments:
  - Linux 64-bit with Node 0.10.x
  - Linux 64-bit with Node.js 5.x

那是因为我使用不同的nodejs版本进行了npm安装,请尝试删除node_modules文件夹进行安装和启动

cd your_project
rm -rf node_modules
npm install
npm start or gulp or whatever

如果您使用的是nvm

nvm use stable // or your favorite version
// remove node_module directory
npm install
npm start or gulp or whatever

8

我对Node v7.4.0 Current(最新功能)有相同的问题。

在这里做了一些阅读,并将Node降级到v6.9.4 LTS,运行后npm rebuild node-sass下载了二进制文件,一切开始正常工作。

https://github.com/sass/node-sass/releases/download/v3.13.1/win32-x64-48_binding.node下载二进制文件
。]-:
二进制文件已保存到D:\ xxx \ xxx-xxx \ node_modules \ node-sass \ vendor \ win32-x64-48 \ binding.node将
二进制缓存到C:\ Users \ user \ AppData \ Roaming \ npm-cache \ node-sass \ 3.13.1 \ win32-x64-48_binding.node `


7

node-sass节点模块使用darwin二进制文件,该文件取决于节点的版本。当不下载二进制文件或下载错误的二进制文件时,会发生此问题。

节点错误

重新安装节点模块将下载预期的node-sass二进制文件:-

对于Mac用户:

rm -rf node_modules
npm cache clean --force
npm i
npm rebuild node-sass --force

对于Windows用户:

rmdir node_modules
npm cache clean --force
npm i
npm rebuild node-sass --force

但是对于某些用户,您需要检查节点版本与node-sass版本的兼容性。使用下表使其兼容,然后再次运行以上命令以解决此问题。

Node JS兼容的node-sass版本

如果问题仍未解决,请检查node-sass支持的环境列表:-https: //github.com/sass/node-sass/releases/


5

对于Visual Studio 2015/2017,右键单击您的 package.json然后单击“还原软件包”。

这将确保运行Visual Studio Tools External Tools中的npm,并将基于该绑定重新构建绑定。


不错且简单的解决方案,并且是我尝试过的唯一可行的解​​决方案。谢谢!
Eli Gassert

4

在工作站中运行Node.js的更新并且全局使用node-sass时,会发生这种情况。

因此,您应该全局卸载node-sass

npm uninstall -g node-sass

然后必须再次在全局安装

npm install -g node-sass

很好的解释!
Michael Czechowski

@ Fay007您可以提供更多信息吗?你有错吗 让我知道
多梅尼科

4

只需刷新您的npm缓存并:

npm cache clean --force  
npm install

在相同情况下,它总是对我有用。

UPD: 您的问题也可能是由于缺少全局sasslib所致。

npm install -g sass

4

只需运行评论就可以了。

npm重建节点ass

享受您的编码...


OP说他尝试了,但是没有用。我也是,这对我也不起作用。相反,我必须降级正在运行的节点的版本。
阿德里安·雷杰斯

4

没有node-sass内的package.json,不会安装 node-sass 的post依赖项

手动运行它为我解决了

node node_modules/node-sass/scripts/install.js 

信用:链接


谢谢你,这完美地解决了我的问题!:)
刘易斯·克拉克

很高兴知道:)
Mukundhan

3

这通常是因为自运行以来环境已更改npm install。运行npm rebuild node-sass将建立当前环境的绑定。


3

我是Windows 8用户,最近将Node更新为v8.11.1和npm v6.0.0并面临类似问题。什么都没用- npm install -g node-sass@latestnode-sass从项目中删除目录node_modules/ -'em对我来说都不起作用。

Laravel Mix向我的浏览器控制台抛出错误,提示缺少节点:win32-x64-57。我不知道是否是因为互联网连接速度较慢或其他原因导致该节点在更新期间丢失。

因此,一些答案指导我查看Node-Sass发行版,并找到了解决方案。

  1. 步骤1:使用命令检查节点SASS版本:npm view node-sass version(在{your version}步骤4)
  2. 步骤2:进入Node-Sass发行版
  3. 步骤3:获取发布,并在每个发布下列出的资产中找到丢失的节点,然后下载文件
  4. 第4步:进入您的PC C:\Users\{User}\AppData\Roaming\npm-cache\node-sass\{your version}\,然后将下载的.node文件放入版本文件夹中

您完成了。

在我的情况下,使用的是node-sass版本4.9.0,缺少的节点是win32-x64-57_binding.node,因此我.node4.9.0版本下载了文件,然后执行步骤4。


2

创建AspNetCore应用程序时,我在Visual Studio 2015社区版中遇到的类似错误是:

Node Sass could not find a binding for your current environment: Windows 32-bit with Node.js 5.x
Found bindings for the following environments:
  - Windows 64-bit with Node.js 6.x
This usually happens because your environment has changed since running `npm install`.
Run `npm rebuild node-sass` to build the binding for your current environment.
    at module.exports ([..]\node_modules\node-sass\lib\binding.js:15:13)
    at Object.<anonymous> ([..]\node_modules\node-sass\lib\index.js:14:35)
    at Module._compile (module.js:397:26)
    at Object.Module._extensions..js (module.js:404:10)
    at Module.load (module.js:343:32)
    at Function.Module._load (module.js:300:12)
    at Module.require (module.js:353:17)
    at require (internal/module.js:12:17)
    at Object.<anonymous> ([..]\node_modules\gulp-sass\index.js:187:21)
    at Module._compile (module.js:397:26)

您可以从上面的错误中看到,原因是由nodejs绑定的版本不匹配引起的。

Node Sass找不到您当前环境的绑定: Windows 32位,带有Node.js 5.x

找到以下环境的绑定:- 具有Node.js 6.x的Windows 64位

我找到的解决方案是

  • 安装nodejs Windows版本
  • 在外部Web工具中添加节点js(C:\ Program Files \ nodejs)的路径(请参见Rob Scott的答案),
  • 将nodejs路径移至$(PATH)上方。

2

这对我有用node_modules,从IDE中删除然后还原软件包,然后npm rebuild node-sass


2

从VS 2017 Professional升级到Enterprise时遇到此问题

  1. 关闭VS
  2. 删除node_modules
  3. 打开VS
  4. 右键单击package.json并选择“恢复软件包”

2

请在根文件夹下写以下命令。

npm重建节点ass

100%有效...


2

如果您的终端/命令提示符显示:

Node Sass找不到绑定 
针对您当前的环境: 
带有节点0.10.x的OS X 64位

并且您尝试了以下命令,例如:

npm缓存清理--force 
rm -rf节点模块 
npm安装 
npm重建节点ass 
npm重建节点ass

&仍然没什么用..

只需在终端中手动运行此命令:

节点node_modules / node-sass / scripts / install.js

现在运行

npm启动或纱线启动


1
最后!谢谢。到目前为止,这是唯一对我有用的解决方案。我已经挣扎了两天。您能解释一下背后的原因吗?
burakcalik

1
对对对!最后!杰基-非常感谢。
user2051552

1

node-sass运行安装脚本以下载所需的二进制文件。如果没有设置环境变量,.npmrc变量或过程参数,则使用当前的过程平台,体系结构和Node ABI版本确定二进制文件。因此,如果您在一个应用程序中运行节点安装,然后尝试在具有不同平台/体系结构/ ABI的应用程序中运行node-sass,则二进制文件将不会下载。解决方案是手动下载二进制文件或使用环境变量(SASS_BINARY_NAME)或.npmrc变量(sass_binary_name)修复二进制版本。

您可以在node-sass \ lib \ extensions.js中的getBinaryPath函数中查看此逻辑


1

我遇到过同样的问题。我在这里找不到任何合适的工作解决方案,所以我找到了我的:

受@ Rob-Scott解决方案的启发以及其他指向我们可以安装2个版本的Node.js的启发,我去了 C:\Program Files (x86)\nodejs了解到除了VS默认安装之外,我还安装了node.js版本。

我的解决方案很简单:

  • 转到工具>选项>项目和解决方案> Web软件包管理>外部Web工具
  • 点击 add an entry(按钮的右上方)
  • 输入 C:\Program Files (x86)\nodejs,按确认enter
  • 把它放在列表的顶部
  • 请享用

Node.js可能在PATH变量中的设置不正确,但这是我工作的非常快速的解决方案,我的2美分:)


1

我必须首先选择新的默认节点版本,nvm use ***或者nvm install ***然后再删除项目中的node_modules中的所有版本npm i


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.