ChatGPT解决这个技术问题 Extra ChatGPT

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

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

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

我试过跑步

npm rebuild node-sass

它说

二进制很好;退出。

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

这与 sass 错误所说的“节点 0.10.x”不同。我无法弄清楚为什么它会得到错误的版本。我还尝试删除 node_modules 文件夹并运行 npm update 或 npm install,这两者都没有解决问题。有任何想法吗?

您是否在使用节点版本管理器,例如 nvm?如果您有时会弄乱一些 npm 模块路径,他们会尝试使用与当前版本不同的版本。如果不是,您可以随时尝试删除 node_modules 文件夹并再次安装依赖项
嘿,我没有使用 nvm,我尝试了删除/重新安装步骤。没运气。
你的开发环境是什么?你使用 VS.NET 2105?
@VasilDininski 我正在使用 nvm,我该怎么办?
打开 Visual Studio 2017 转到工具 -> 选项...转到项目和解决方案 -> Web 包管理将 $(PATH) 移动到该列表的顶部并关闭该窗口。就我而言,此解决方案有效,因为我的节点版本是 11.x

K
Kingsley Mitchell

我有同样的问题

您的 gulpfile 中有错误:错误:缺少绑定 E:\allapp\badshaindiancuisine\node_module\node-sass\vendor\win32-x64-46\binding.node Node Sass 找不到当前环境的绑定:Windows 64 -bit with Node.js 4.x 找到以下环境的绑定: - OS X 64-bit with Node.js 4.x

如何解决问题

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

npm rebuild node-sass

最初工作,但仍然有问题。因此,我在 finder 中使用 CMD+SHIFT+G 转到 /usr/local/lib/ 并重命名了 node-sass 文件夹。然后运行 npm install node-sass -g。那个固定的。我在 Mac 操作系统上
将nodejs更新到8.xx后我遇到了这个问题,这解决了它。非常感谢!赞赏!
不工作。节点:v10.7.0 节点萨斯:v3.13.1。说我当前的环境是节点为 0.10.x 的 32 位窗口,这根本不是真的。
第一步是删除您的 node_modules 并运行 npm install 而不是重建您的 node-sass。
npm rebuild node-sass 后问题仍然存在。但是,npm uninstall node-sass 然后 npm install node-sass 为我工作。
R
Rob Scott

对于使用 Visual Studio 的用户:

目前为 VS 2015、2017、2019、2022 工作(通过下面和/或这篇文章的回复)

Task Runner Explorer can't load tasks

对于 VS 2015

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

对于 VS 2017(.3)、VS 2019 和 VS 2022

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

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

重新排序,使 $(PATH) 高于 $(DevEnvDir)\Extensions\Microsoft\Web Tools\External

https://i.stack.imgur.com/q2Al9.png

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


如果您使用的是 VS2015,则绝对应该进行此答案中描述的更改。这可能是您解决此问题所需要做的所有事情。
这也适用于全新安装的 VS2017。
在VS2017.3中,设置的路径是Tools > Options > Projects and Solutions > Web Package Management > External Web Tools
该死的!我永远也想不通......一切都是为了在愚蠢的javascript中用愚蠢的节点编译愚蠢的sass
可以确认,这在 VS 2019 中还是一个东西。
L
Legends

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

删除 node_modules npm install 下的 node-sass 文件夹

就我而言,它也找不到 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

以上对我有用,尽管它在两个不同文件夹中的两个不同应用程序中发生了两次。 python 安装是一次性的(即当我在另一个应用程序上第二次遇到错误时不需要)并且我不需要最终的 npm run build 命令(至少没有明确)但我确实需要运行重建--force 我的两个应用程序两次。
在我的 Ubuntu 20.04 上重建需要超过 10 分钟。
m
maxshuty

为我工作:

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


这也适用于我。显然是节点版本冲突。谢谢!
必须删除以下目录:C:\Users\your_user_name\AppData\Roaming\npm-cache
这行得通! npm rebuild node-sass 对我不起作用。 (带有 WebStorm 的 Mac)
这是唯一对我有用的解决方案! npm rebuild node-sass --force 也不起作用。
这应该被标记为答案。到目前为止,我不知道为什么我的解决方案一直针对更高版本的节点,并不断给我关于 nodeass 的错误消息。我在 Azure 管道中有一步将节点版本强制为我想要的版本。现在我可以删除那一步了!
M
Maurizio L

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

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

此处其他答案(npm installnpm rebuild node-sass 等)中列出的 npm 命令均无效。

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

可以在 on 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


也为我工作,谢谢!尝试清理 node_modules,删除缓存,rifraf,重建 node-sass,从 VS2015 重建,而不是使用 npm 从命令行重建,最后修复了它。
@JanCiołek 我只发生过一次,所以我不必重做。我不确定它是否是特定于版本的,或者是否只是特定安装的问题,但我没有找到更好的解决方案(这里的其他答案对我不起作用)。麻烦与否,它似乎是这个问题的某些变体的必要解决方案。
@Beofett 这个错误占用了我很多时间,我做了这个线程中提到的所有内容,但我忘记运行编译。谢谢!
这是工人对我的唯一答案,但在 github.com/sass/node-sass/releases 而不是链接的 URL 中找到了我的绑定。干杯
谢谢@Beofett。您的回答使我得以在 Windows 和 Mac OSX 中运行我的 Ionic 项目。
R
Rocío García Luque

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

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


感谢上帝。我实际上尝试先在我的macbook上降级节点,然后在半小时后放弃
S
Sherwood Callaway

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 将为容器操作系统下载正确的绑定。

请参阅 my repro case 了解更多信息。


在不同的环境下面临同样的问题: - MacOS 下的 dev 用于单元测试 - 使用 docker-compose 的 dev(用于完整的系统交互) - 基于 alpine 的 OS 下的 prod ;在 docker 中安装(或不安装)和 npm install(或不安装)在具有架构相关模块时会出现问题:获取 darwinlinux 二进制文件,具体取决于您npm i它的位置对于像 node-sass@google-cloud/pubsub 这样的 NodeJS 模块会发生
感谢您提及 docker 的解决方案,这正是为我解决的问题!
我有 /node_modules,它被绑定安装到 /app/node_modules 的容器中。即使我的 NODE_PATH/node_modules(确实存在)并且应该在不同的位置..,它还是随机开始引起问题。我在这两个地方都安装了,以便我的 prettier 开发部门可以与我的 vscode 一起使用。哎呀。奇怪的东西。感谢您对码头工人的提及 <3
我发现这在删除 /node_modules/ 后有效,然后运行 'npm install' 然后你的命令 'npm rebuild node-sass --force'
c
core114

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

npm uninstall --save node-sass

npm install --save node-sass

看看它对我的工作,Stack link here


f
farrellw

* Docker 相关答案在这里 *

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

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

解决方案:

添加一个 .dockerignore,并在里面添加:

node_modules

这将导致 npm install 为 docker 环境而不是本地机器环境安装绑定。


B
Balram Singh

node-sass 节点模块使用依赖于节点版本的 darwin 二进制文件。当未下载二进制文件或下载错误的二进制文件时会出现此问题。

[![节点 sass 错误][1]][1]

重新安装节点模块将下载 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 版本与 node-sass 版本的兼容性。使用下表使其兼容并再次运行上述命令以解决此问题。

这是与 node-sass 的节点兼容性表

NodeJS | Supported node-sass version | Node Module
Node 17     7.0+                        102
Node 16     6.0+                        93
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+, <6.0                  64
Node 8      4.5.3+, <5.0                57
Node <8     <5.0                        <57

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


此外,如果您克隆其他项目,则需要将 package.json 中的节点更改为您当前的节点版本。
u
user3890355

尝试添加后缀--force

npm rebuild node-sass --force

为我工作。谢谢你。
M
Michael Czechowski

对于我的特殊情况,上述答案均无效。那么它的工作原理:

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-sassnpm install node-sass -g

npm rebuild node-sass
npm install bindings

J
Julien Jacobs

我有同样的问题

    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 install,尝试删除 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

J
Jackie Santana

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

Node Sass could not find a binding 
for your current environment: 
OS X 64-bit with Node 0.10.x

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

npm cache clean --force 
rm -rf node modules 
npm install 
npm rebuild node-sass

&仍然没有任何工作..

只需在终端中手动运行它:

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

现在运行

npm start or yarn start


最后!谢谢你。这是迄今为止对我有用的唯一解决方案。我已经挣扎了两天了。你能解释一下背后的原因吗?
对对对!最后!杰基-非常感谢你。
O
Owen Blacker

我对 Node v7.4.0 Current (Latest Features) 也有同样的问题。

在这里阅读并将 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 `


M
Mayeenul Islam

我是 Windows 8 用户,最近将 Node 更新为 v8.11.1,将 npm 更新为 v6.0.0,并遇到了类似的问题。没有任何效果 - npm install -g node-sass@latest 或从项目 node_modules/ 中删除 node-sass 目录 - 它们都不适合我。

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

因此,一些答案引导我查看 Node-Sass 版本,我找到了解决方案。

第 1 步:使用以下命令检查您的 node-sass 版本:npm view node-sass 版本(第 4 步中的 {your version}) 第 2 步:获取 Node-Sass 版本 第 3 步:获取您的版本并在每个版本下列出的资产,并下载文件第 4 步:进入您的 PC 的 C:\Users\{User}\AppData\Roaming\npm-cache\node-sass\{your version}\ 并将下载的 .node版本文件夹中的文件

你完成了。

在我的例子中,node-sass 版本是 4.9.0,缺少的节点是 win32-x64-57_binding.node,所以我从 4.9.0 release 下载了 .node 文件并执行了第 4 步。


哇……在找到这个答案之前,我们在同事的电脑上被困了整整一个小时。没有其他工作,甚至破坏了整个 node_modules 目录。这完全解决了我们的问题,非常感谢您的帮助。
S
Sivasankar Sabapathy sivasunke

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

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


不错且简单的解决方案,也是我尝试过的上述少数解决方案中唯一有效的解决方案。谢谢!
J
Jean

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

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

我的解决方案很简单:

转到工具 > 选项 > 项目和解决方案 > Web 包管理 > 外部 Web 工具

单击添加条目(右上角按钮块的最左侧)

输入 C:\Program Files (x86)\nodejs,按回车验证

把它放在列表的顶部

享受

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


N
Nico

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

所以你应该全局卸载 node-sass

npm uninstall -g node-sass

然后你必须再次全局安装它

npm install -g node-sass

很好的解释!
@Fay007 你能提供更多信息吗?你有错误吗?让我知道
M
Mukundhan

如果没有 node-sass 中的 package.json,则不会安装 node-sass 的 post 依赖项

手动运行它为我解决了

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

信用:link


谢谢你,这完美地解决了我的问题! :)
很高兴知道:)
A
Aditya Prakash

运行以下命令,它对我来说很好。

npm install node-sass -g

npm rebuild node-sass

nvm use 10.16.3

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

ng serve --poll=2000


l
lava-lava

这对我有用:yarn add --force node-sass@4.14.1yarn add --force node-sass


S
Saugat Bhattarai

这通常是因为运行 npm install 后环境发生了变化。运行 npm rebuild node-sass 为当前环境构建绑定。


v
vishwanath singh

在 node_modules/node-sass/vendor/linux-x64-46/ 中创建一个新目录。根据您的版本从 https://github.com/sass/node-sass/releases (linux-x64-59_binding.node) 下载文件。将其粘贴到 node_modules/node-sass/vendor/linux-x64-46/ 重命名为 binding.node


虽然不是一个好的做法,但这个解决方案实际上可能有效(当所有其他解决方案都失败时)所以在投票时,应该澄清为什么
d
dk_french032

从 VS 2017 Professional 升级到 Enterprise 时我遇到了这个问题

关闭 VS 删除 node_modules 打开 VS 右键单击 package.json 并选择“恢复包”


这是 Visual Studio 最安全的方法。忘记所有这些命令,因为它们可能不起作用。这些命令必须在相同的环境中运行,这是棘手的部分。让视觉工作室来做,你就准备好了。
S
Shivam Kubde

删除 node_modules 文件夹。再次安装依赖项。 (npm 我)


这只是 npm 或 yarn 的解决方案。
谢谢!这让我发疯,您的解决方案为我解决了这个问题!
D
Don P

没有一个安装/重建解决方案为我解决了这个问题(使用 gulp)。

这是我解决它的方法:

1) 从 repository 下载缺少的绑定文件。

2) 重命名文件 binding.node

3) 如果目录不存在,则创建 node_modules/node-sass/vendor/darwin-x64-11(错误消息的路径)目录。

4) 将绑定文件添加到 node_modules/node-sass/vendor/darwin-x64-11


A
AlexK

只需刷新您的 npm 缓存并:

npm cache clean --force  
npm install

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

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

npm install -g sass

A
Alreadytakenindeed

打开 Visual Studio 2017 转到 Tools -> Options... 转到 Projects and Solutions -> Web Package Management 将 $(PATH) 移动到该列表的顶部并关闭该窗口。重新启动 Visual Studio。这在我的情况下有效,因为我的节点版本是 11.x


当不同的项目使用不同的绑定时,这绝对是一个有效的答案。执行 rebuild node-sass 是不够的。更改路径优先级解决了这个问题。
C
Community

只需运行评论即可。

npm 重建节点-sass

享受你的编码...


OP说他试过了,但没有用。我也是,它对我也不起作用。相反,我不得不降级我正在运行的节点版本。
实际上不在linux ubuntu 20.04上。

关注公众号,不定期副业成功案例分享
关注公众号

不定期副业成功案例分享

领先一步获取最新的外包任务吗?

立即订阅