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

时间:2016-06-23 08:57:40

标签: node.js npm

我在构建应用程序时遇到问题,因为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错误“Node 0.10.x”的内容不同。我无法弄清楚为什么它会得到错误的版本。我还尝试删除node_modules文件夹并运行npm update或npm install,这两个文件都没有解决问题。有什么想法吗?

55 个答案:

答案 0 :(得分:603)

我遇到了同样的问题

  

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

     

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

如何解决我的问题

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

npm rebuild node-sass

答案 1 :(得分:241)

注意我正在使用VS 2015,64位Windows 7.

也适用于VS 2017(来自对此帖的回复)

Task Runner Explorer can't load tasks

对于VS 2015

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

对于VS 2017(.3)

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

在VS 2017中,您还需要将$(PATH)放在$(VSINSTALLERDIR)\ Web \ External

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

enter image description here

删除node_modules并运行npm install然后npm rebuild node-sass 没有做任何事情

答案 2 :(得分:117)

我在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位

此处其他答案(npmnpm install等)中列出的npm 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

答案 3 :(得分:112)

为我工作:

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

答案 4 :(得分:85)

只需执行以下命令:

npm rebuild node-sass --force

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

答案 5 :(得分:19)

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

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

答案 6 :(得分:13)

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

npm uninstall --save node-sass

npm install --save node-sass

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

答案 7 :(得分:12)

尝试添加后缀--force

npm rebuild node-sass --force

答案 8 :(得分: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`

答案 9 :(得分:8)

我遇到了同样的问题

    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_proyect
rm -rf node_modules
npm install
npm start or gulp or whatever

如果你正在使用nvm do

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

答案 10 :(得分:6)

对于我的特殊情况,以上答案均无效。所以它起作用了:

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

答案 11 :(得分:5)

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

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 
npm rebuild node-sass

&仍然无效。.

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

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

现在运行

npm start or yarn start

答案 12 :(得分:4)

对于Visual Studio 2015/2017,右键单击package.json并单击“还原包”。

这将确保运行Visual Studio Tools外部工具中的npm,并基于此重建绑定。

答案 13 :(得分:4)

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

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

解决方案:

添加一个.dockerignore,然后在其中添加:

node_modules

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

答案 14 :(得分:3)

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

答案 15 :(得分:3)

只需刷新您的npm缓存,然后:

private void showCountDown(final int counterValue) {
    new CountDownTimer(counterValue, 1000) {

        public void onTick(long millisUntilFinished) {
            String elapsedTime = String.valueOf(millisUntilFinished / 1000);
            timer.setText(elapsedTime);
        }
        public void onFinish() {
            timer.setText(R.string.text);
        }
    }.start();
}

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

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

npm cache clean --force  
npm install

答案 16 :(得分:2)

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

npm重建node-sass

100%有效...

答案 17 :(得分:2)

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

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

npm uninstall -g node-sass

然后您必须再次在全局安装

npm install -g node-sass

答案 18 :(得分:2)

我是Windows 8用户,最近将节点更新为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文件放在版本文件夹中
  5. 你已经完成了。

    在我的情况下,node-sass版本为4.9.0,缺少的节点为win32-x64-57_binding.node,因此我从4.9.0 release下载了.node文件,然后执行了步骤4。 / p>

答案 19 :(得分:2)

只需运行评论即可。

npm重建节点无效

享受您的编码...

答案 20 :(得分:2)

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

Node sass error

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

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

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

Node JS compatible node-sass version

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

答案 21 :(得分:2)

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

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

答案 22 :(得分:2)

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

还原包

答案 23 :(得分: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

     

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

我找到的解决方案是

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

答案 24 :(得分:1)

从VS 2017 Professional升级到企业版时遇到了这个问题

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

答案 25 :(得分:1)

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

答案 26 :(得分:1)

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

这是我的解决方法:

1)从repository下载丢失的绑定文件。

2)重命名文件binding.node

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

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

答案 27 :(得分:1)

这对我有用: // Create authorization header using oauth library const oauthHeader = ... const formData = new FormData(); formData.append('status', 'Messy status text with spaces'); fetch( 'https://api.twitter.com/1.1/statuses/update.json', // No status text in url { method: 'POST', body: formData, headers: { ...oauthHeader ...formData.getHeaders(), } } ) List<Future<dynamic>> _selectedItems = List<Future<dynamic>>(); List<dynamic> listofimg = []; _selectedItems.forEach((element) { element.then((value) => listofimg.add(value)); });

答案 28 :(得分:1)

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

答案 29 :(得分:1)

我有同样的问题。我在这里找不到任何正确的解决方案,所以我发现了我的:

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

我的解决方案很简单:

  • 转到工具&gt;选项&gt;项目&amp;解决方案&gt; Web包管理&gt;外部网络工具
  • 点击add an entry(右上方按钮块的最左侧)
  • 输入C:\Program Files (x86)\nodejs,按enter
  • 进行验证
  • 将其置于列表顶部
  • 享受

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

答案 30 :(得分:0)

就我而言,我发现 package-lock.json 中的 node-sass 版本与 package.json 中的 node-sass 版本不同。此步骤解决了我的问题。

  1. 删除文件夹节点模块
  2. 删除 package-lock.json
  3. 安装 python 2.7
  4. 将 C:/Python27;C:/Python27/Scripts 添加到环境变量 -> 路径
  5. 在 Powershell 中,以管理员身份运行 -> npm install -g node-gyp
  6. 在我的工作文件夹中 -> npm install

希望这对你也有用

答案 31 :(得分:0)

对我来说,是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>

答案 32 :(得分:0)

检查您的 npm 版本是否与您项目所需的相同

答案 33 :(得分:0)

在 linux ubuntu 20.04 上我需要几个步骤,首先将 node 降级到合适的版本,删除 node_modules,运行 yarn install 最后运行 sudo yarn add node-sass@4.13.0 --force.Node 版本 10.0.0。 唯一适合我的方法。

答案 34 :(得分:0)

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

答案 35 :(得分:0)

我尝试了以上所有方法,但没有任何效果,当我决定访问官方的node.js网站时,我试图将节点版本与node-sass版本进行匹配,下载最新的节点版本(当前为v14,在v12上)并安装。这终于解决了我的问题!您的node-sass版本可能早于node.js版本。

答案 36 :(得分:0)

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

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

答案 37 :(得分:0)

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

如果从nodejs安装节点,则默认安装目录为 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

重新运行项目。

答案 38 :(得分:0)

Windows 10 对我来说这是一个有趣的... 为了解决该问题,我必须执行以下所有操作。 1.)显然,某些最新版本的Node.js不支持node-sass 因此,我必须卸载Node-v 12.14.1,并删除C:/ Program Files中的nodejs目录。 2.)重新安装早期版本的Node(对我来说10.16.2起作用)。注意:我最初下载的是x86版本,因此如果您的系统是x64,请下载x64版本... 3.)从这里我必须删除我的整个项目,然后重新克隆它。在此之后一切正常。

答案 39 :(得分:0)

node-sass package.json 的情况下,node-sass的发布依赖项未安装。 >

  

手动运行它对我来说解决了

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

信用:link

答案 40 :(得分:0)

删除/ node-modules文件夹并重新安装,或在删除后运行gradle任务deploy

/Users/warren/Sites/random-docs/my-cms/node_modules/node-sass/vendor/darwin-x64-11/binding.node

它可以解决您的问题。

答案 41 :(得分:0)

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

答案 42 :(得分:0)

这可能不会在其他任何人身上发生,但就我而言,当我决定重新启动项目(遵循不同的vue.js教程)时,就会出现此错误。

造成我问题的步骤是:

for l in f:
    w = l.split()
    if len(w) >= 2 and w[0] == 'From' and w[1] in wk:
        print(w[1])

问题是我以前的服务器仍在其他终端选项卡上运行。在localhost:8080上,仍显示的页面是旧项目。

我要做的就是关闭终端中的旧服务器,然后再次执行“ npm run serve”(或查看localhost:8081)。

以防万一这会使别人困惑半小时,或者是因为大笑和咯咯笑。

答案 43 :(得分:0)

如果您使用的是Mac,请安装Xcode。

答案 44 :(得分:0)

对于从系统节点切换到nvm 的人,如果您尚未删除~/.npm~/.node-gyp文件夹,则可能会出现此问题,因为可能是{ {1}} 可以不同。

在任何情况下都应删除这些文件夹。

答案 45 :(得分:0)

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

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

    rimraf node_modules

  2. 在npm sass&amp;中更新package.json个套餐承诺控制源。

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

答案 46 :(得分:0)

打开Visual Studio 2017
转到工具->选项...
转到项目和解决方案-> Web软件包管理
将$(PATH)移动到该列表的顶部,然后关闭该窗口。
重新启动Visual Studio。
对于我来说这是可行的,因为我的节点版本是11.x

答案 47 :(得分:0)

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

答案 48 :(得分:0)

我通过将JAVA_HOME从x86更改为x64来解决此问题。 Maven在x86上运行,但是节点在使用x64。删除/ node和/ node_modules并重新构建。

答案 49 :(得分:0)

  1. 删除node_modules文件夹。
  2. 再次安装依赖项。 (npm i)

答案 50 :(得分:0)

我尝试了所有发现的方法。

我注意到该文件夹​​有些奇怪的行为。当我尝试从VS终端“ cd”到“ node_sass”文件夹时,它提示“未找到文件夹”,但在Finder中可见。

VS终端上的

chmod即使使用'sudo'命令也找不到文件夹。

我已经从本地MacOs终端进行了更改,并在用node重建之后。

答案 51 :(得分:-1)

对我来说,当我运行npm安装程序时,它会审计已安装的软件包并显示“发现1个严重漏洞”并通过运行

npm audit fix

成功了。发布是否有帮助。

更新:共享我的错误日志:

ERROR in ./src/styles.scss (./node_modules/@angular-devkit/build-angular/src/angular-cli-files/plugins/raw-css-loader.js!./node_modules/postcss-loader/src??embedded!./node_modules/sass-loader/lib/loader.js??ref--14-3!./src/styles.scss)
Module build failed (from ./node_modules/sass-loader/lib/loader.js):
Error: Missing binding ..\node_modules\node-sass\vendor\win32-x64-57\binding.node
Node Sass could not find a binding for your current environment: Windows 64-bit with Node.js 8.x

Found bindings for the following environments:
  - Windows 64-bit with Node.js 10.x

This usually happens because your environment has changed since running `npm install`.
....

它确实要求我

Run `npm rebuild node-sass` to download the binding for your current environment.

答案 52 :(得分:-1)

  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

答案 53 :(得分:-2)

我能够解决以下问题 npm install --global --production Windows-build-tools

npm install --msvs_version = 2015

“ devDependencies”:{ “ babel-core”:“ ^ 6.26.0”, “ babel-loader”:“ ^ 7.1.4”, “ babel-plugin-transform-decorators-legacy”:“ ^ 1.3.5”, “ babel-preset-env”:“ ^ 1.6.1”, “ babel-preset-react”:“ ^ 6.24.1”, “ babel-preset-stage-2”:“ ^ 6.24.1”, “ css-loader”:“ ^ 0.28.11”, “ mini-css-extract-plugin”:“ ^ 0.4.0”, “ node-sass”:“ ^ 4.11.0”, “ sass-loader”:“ ^ 6.0.7”, “ webpack”:“ ^ 4.4.1”, “ webpack-cli”:“ 3.1.0”, “ webpack-dev-server”:“ ^ 3.1.1” }

答案 54 :(得分:-2)

对于Mac:

  1. -cmd + SHIFT + G
  2. - / usr / local / lib / node-sass
  3. - 右键单击​​并重命名:仍应使用相同的node-sass
  4. - 然后运行:npm install node-sass -g
  5. 那是固定的。