【问题标题】:Node Sass couldn't find a binding for your current environmentNode Sass 找不到当前环境的绑定
【发布时间】:2016-10-25 12:04:48
【问题描述】:

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

缺少绑定错误 /Users/warren/Sites/random-docs/my-cms/node_modules/node-sass/vendor/darwin-x64-11/binding.node
Node Sass 找不到当前环境的绑定:OS X 64-bit with Node 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

标签: node.js npm


【解决方案1】:

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

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

【讨论】:

  • 感谢上帝。我实际上是先尝试在我的 macbook 上降级节点,然后在半小时后放弃
【解决方案2】:

我遇到了同样的问题

    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

【讨论】:

    【解决方案3】:

    我也遇到了同样的问题

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

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

    如何解决我的问题

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

    npm rebuild node-sass
    

    【讨论】:

    • 最初工作但仍有问题。因此,我在 finder 中使用 CMD+SHIFT+G 转到 /usr/local/lib/ 并重命名了 node-sass 文件夹。然后运行npm install node-sass -g。那是固定的。我在 Mac OS 上
    • 我在将 nodejs 更新到 8.x.x 后遇到了这个问题,这解决了它。非常感谢!赞赏!
    • 不起作用。节点: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 为我工作。
    【解决方案4】:

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

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

    此处其他答案中列出的npm 命令(npm installnpm rebuild node-sass 等)均不起作用。

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

    可以在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 发布地址: 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 项目。
    【解决方案5】:

    对于使用 Visual Studio 的用户:

    目前正在为 VS 2015、2017、2019、2022[preview 4] 工作(通过下方和/或此帖子的回复)

    Task Runner Explorer can't load tasks

    对于 VS 2015

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

    对于 VS 2017(.3) 和 VS 2019

    • 工具 > 选项 > 项目和解决方案 > 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 什么也没做

    【讨论】:

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

    我在使用 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`

    【讨论】:

      【解决方案7】:

      我在创建 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 找不到您当前环境的绑定: 带有 Node.js 5.x 的 Windows 32 位

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

      我找到的解决方案是

      • 安装nodejs windows version
      • 在外部 Web 工具中添加节点 js 的路径 (C:\Program Files\nodejs)(参见 Rob Scott 的回答),
      • 将 nodejs 路径移到 $(PATH) 上方。

      【讨论】:

        【解决方案8】:

        我只是运行 npm rebuild 而不是 npm rebuild node-sass 并且问题消失了。但我不知道背后的魔力是什么。

        【讨论】:

          【解决方案9】:

          这对我有用 删除node_modules,然后从IDE恢复包,然后npm rebuild node-sass

          【讨论】:

            【解决方案10】:

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

            【讨论】:

              【解决方案11】:

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

              你可以在 node-sass\lib\extensions.js 的 getBinaryPath 函数中看到这个逻辑

              【讨论】:

                【解决方案12】:

                检查您的系统:您的系统是否有 2 个不同的 Node.js 安装?

                如果从nodejs安装node,默认安装目录是 C:\Program Files\nodejs 我在这里安装了节点版本 6.xx。

                检查您的 VS 外部网络工具目录 C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Web\External 我在那里安装了节点版本 5.xx。

                一种解决方法是:

                • 备份C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Web\External目录。
                • 复制C:\Program Files\nodejs目录内容和
                • 粘贴到 C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Web\External 目录。
                • 从您的解决方案中删除 node_modules 目录。
                • 重新运行项目。 如果您收到错误消息,请再次运行该项目。

                如果这不起作用

                • 从您的解决方案中删除 node_modules 目录。

                注意:$ 是命令提示符

                $  npm install 
                …
                $ npm run build:dev
                

                重新运行项目。

                【讨论】:

                  【解决方案13】:

                  请记住将 xxx.node 文件(在我的情况下为 win32-x64-51)重命名为 binding.node 并粘贴到 xxx 文件夹中(在我的情况下为 win32-x64-51),

                  【讨论】:

                    【解决方案14】:

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

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

                    【讨论】:

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

                    为我工作:

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

                    【讨论】:

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

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

                    npm uninstall --save node-sass
                    

                    npm install --save node-sass
                    

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

                    【讨论】:

                      【解决方案17】:

                      对于系统节点切换到nvm的人,如果你没有删除~/.npm~/.node-gyp文件夹,这个问题可能会出现,因为可能是~/.node-gyp中的节点版本可能不同。

                      无论如何都应该删除这些文件夹。

                      【讨论】:

                        【解决方案18】:

                        @core114​​ 的回答建议卸载和安装 sass 软件包再次适用于手动过程,但对于 自动部署/CI/CD,您需要更通用的方法。对我有用的是不同环境的 Continuos 部署:

                        1. 在部署前使用rimraf 删除旧的node_modules

                          rimraf 节点模块

                        2. 在 npm package.json 中更新 sass 包并提交源代码管理。

                        对于下一次部署,它将自动刷新所有环境的 sass。

                        【讨论】:

                          【解决方案19】:

                          尝试添加后缀--force

                          npm rebuild node-sass --force
                          

                          【讨论】:

                          • 为我工作。谢谢。
                          【解决方案20】:

                          对我来说,问题是 Task Runner Explorer 的目标是我的项目的解决方案。当我使用下拉列表更改为项目本身时,在 Task Runner Explorer 刷新按钮旁边,它显示了相关任务。

                          【讨论】:

                            【解决方案21】:

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



                            如果由于某种原因上述方法不适合您,请尝试以下操作:
                            1. 删除node-sassnode_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
                            

                            【讨论】:

                            • 以上内容对我有用,尽管它在两个不同文件夹中的两个不同应用程序中发生了两次。 python 安装是一次性的(即当我在另一个应用程序上第二次收到错误时不需要),我不需要最终的 npm run build 命令(至少没有明确地),但我确实需要运行为我的两个应用程序重建 --force 两次。
                            • 在我的 Ubuntu 20.04 上重建需要超过 10 分钟。
                            【解决方案22】:

                            对于 Mac:

                            1. -CMD+SHIFT+G
                            2. -/usr/local/lib/node-sass
                            3. -右键重命名:应该还是一样的node-sass
                            4. -然后运行:npm install node-sass -g

                            那是固定的。

                            【讨论】:

                              【解决方案23】:
                              1. 在 node_modules/node-sass/vendor/linux-x64-46/ 中创建一个新目录。
                              2. 来自https://github.com/sass/node-sass/releases的下载文件
                                (linux-x64-59_binding.node) 基于您的版本。
                              3. 粘贴到node_modules/node-sass/vendor/linux-x64-46/重命名为binding.node

                              【讨论】:

                              • 虽然不是一个好的做法,但这个解决方案实际上可能有效(当所有其他解决方案都失败时)所以在投票时,应该澄清原因
                              【解决方案24】:

                              我是 Windows 8 用户,最近将 Node 更新为 v8.11.1 并将 npm 更新为 v6.0.0 并面临类似问题。没有任何效果 - npm install -g node-sass@latest 或从项目中删除 node-sass 目录 node_modules/ - 没有一个对我有用。

                              Laravel Mix 向我的浏览器控制台抛出错误,提示缺少节点:win32-x64-57。不知道是网速慢还是什么原因,更新过程中节点丢失了。

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

                              1. 第 1 步: 使用以下命令检查您的 node-sass 版本:npm view node-sass version(第 4 步中的 {your version}
                              2. 第 2 步: 前往Node-Sass Releases
                              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,所以我从4.9.0 release 下载了.node 文件并按照步骤4。

                              【讨论】:

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

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

                              受@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 美分 :)

                              【讨论】:

                                【解决方案26】:

                                npm rebuild node-sass --force

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

                                docker exec &lt;container-id&gt; npm rebuild node-sass --force

                                当 node-sass 没有与当前操作系统正确绑定时,会出现此错误。

                                如果您使用 Docker,当您将 node_modules 直接添加到 Dockerfile 中的容器文件系统(或使用 Docker 卷挂载它们)时,通常会发生此错误。

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

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

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

                                【讨论】:

                                • 在不同的环境下面临同样的问题: - MacOS 下的开发用于单元测试 - 使用 docker-compose 开发(用于完整的系统交互) - 基于 alpine 的操作系统下的 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 一起使用。哎呀。奇怪的东西。感谢您提到码头工人
                                • 我发现这在删除 /node_modules/ 后有效,然后运行 ​​'npm install' 然后你的命令 'npm rebuild node-sass --force'
                                【解决方案27】:

                                在构建 docker 映像并尝试在本地运行它时,我遇到了同样的问题。您需要添加一个 .dockerignore 文件,其中包含以下内容: .DS_Store .git .gitignore .idea log/* target tmp node_modules client/node_modules spec/internal/public/assets public/assets

                                【讨论】:

                                • 许多人可能不会在答案中得到这么多,但如果有人在构建 docker 映像和安装节点时遇到此错误,人们可能会错误地从他们的主机文件系统中包含 node_modules (一个副本......命令)。在根项目级别包含 node_modules 的 .dockerignore 文件将解决此问题。
                                【解决方案28】:

                                对我来说,是 maven-war-plugin 将过滤器应用于文件并损坏了 woff 文件。

                                <plugin>
                                <artifactId>maven-war-plugin</artifactId>
                                <configuration>
                                    <webResources>
                                        <resource>
                                            <directory>dist</directory>
                                            <filtering>true</filtering>
                                        </resource>
                                    </webResources>
                                </configuration>
                                

                                移除 true

                                或者,如果您需要过滤,您可以执行以下操作:

                                <plugin>
                                    <artifactId>maven-war-plugin</artifactId>
                                    <configuration>
                                        <webResources>
                                            <resource>
                                                <directory>dist</directory>
                                                <excludes>
                                                    <exclude>assets/**/*</exclude>
                                                </excludes>
                                                <filtering>true</filtering>
                                            </resource>
                                            <resource>
                                                <directory>dist</directory>
                                                <includes>
                                                    <include>assets/**/*</include>
                                                </includes>
                                            </resource>
                                        </webResources>
                                    </configuration>
                                </plugin>
                                

                                【讨论】:

                                  【解决方案29】:

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

                                  1. 关闭VS
                                  2. 删除节点模块
                                  3. 打开VS
                                  4. 右键单击 package.json 并选择“恢复包”

                                  【讨论】:

                                  • 这是 Visual Studio 最安全的方法。忘记所有这些命令,因为它们可能不起作用。命令必须从 same 环境中运行,这是棘手的部分。让视觉工作室来做吧,你就准备好了。
                                  【解决方案30】:

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

                                  【讨论】:

                                    猜你喜欢
                                    • 2020-08-01
                                    • 2019-10-12
                                    • 2021-04-06
                                    • 2017-04-15
                                    • 1970-01-01
                                    • 2022-07-19
                                    • 2021-02-19
                                    • 2019-08-29
                                    • 2022-06-14
                                    相关资源
                                    最近更新 更多